2017-08-07 9 views
-1

タプルのリストを生成しようとしています。 [('Client 0', 120),..,('Client 9', 45)]、これはtotalitemsです。私は以下のコードを使用していますが、エラーが発生しています。タプルのリストを作成する(TypeError: 'int'オブジェクトは反復不可能です)

N = 10 
value_range = np.arange(0, N, 1) 
newitems = []  
for i in value_range: 
    newvisits = ("Client %d" % i,) + random_tuple(length=6, values=(0, 15, 30, 45, 60)) 
    newitems.append(newvisits) 

totalitems = [] 
i = 0 
for each_client in newitems: 
    i += 1 
    total = sum(each_client[1:]) 
    newtotal = ("Client %d" % i,) + tuple(total) 
    totalitems.append(newtotals) 

私が手にエラーがある:私は明らかに私はインデックスを無視する必要があり、totalitems内の各タプルの合計を見つけようとしている

newtotals = ("Client %d" % i,) + tuple(total) 
TypeError: 'int' object is not iterable 

[0]。

誰かが間違っていると知っていますか?またはコードを改善する方法に関する提案?

NB。 random_tupleは自明であり、長さ6のタプルを返し、各要素は値のランダムな選択です。

+0

を、私のために '、列挙中each_client(newitems)のようなものを試してください:' – RagingRoosevelt

+0

'random_tupleは()'は何ですか。あなたのデータがどのように見えるか分かりますか? – AChampion

答えて

6
newtotals = ("Client %d" % i,) + tuple(total) 

totalは数字です。あなたはそれをtupleに変換することはできません。 tuple()クラスはあなたにシーケンスを渡すことを期待しています。ちょうどあなたが直接たいタプル構築してみてください。ループのためのあなたの第二では

newtotals = ("Client %d" % i, total) 
+0

kindallの答えに追加するには、その行が意味するOPがどれくらいだと思いますか? 'newtotals =("クライアント%d "%i、)+(合計)" – RagingRoosevelt

+0

@kindallこれは素晴らしいことです。また、私は 'Client 1からClient 10'まで印刷したことに気付きましたが、' Client 0からClient 9'まで 'newitems'と一致するように変更する方法がありますか? – plshelp

+0

'for'ループで' enumerate'関数を使うことをお勧めします。そうすれば、 'i'を扱うために別々のステートメントは必要ありません。だから '私のために列挙する(newitems)each_item'。 – kindall

関連する問題