2017-08-07 91 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) 

我得到的错误是:

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

我试图找到总每个元组的totalitems,很明显,我需要忽略指数[0]。

有没有人知道我要去哪里错了?或者有关如何改进代码的建议?

注意: random_tuple是非常明显的,它返回一个长度为6的元组,每个元素是随机选择的值。

+0

在你的第二个for循环,尝试像 '因为我,在历数(newitems)each_client:' – RagingRoosevelt

+0

什么是'random_tuple()'。你能分享你的数据看起来像什么吗? – AChampion

回答

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

total是一个数字。你不能把它转换成这样的tuple;类tuple()期望您传递一个序列。尽量只建设要直接元组:

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

要添加到kindall的答案,我认为该行的意思是 'newtotals =(“Client%d”%i,)+(total,)' – RagingRoosevelt

+0

@kindall太棒了,谢谢!另外,我刚刚注意到这从“客户端1到客户端10”打印,是否有方法可以更改它以便从“客户端0到客户端9”打印,以便它匹配“新项目”? – plshelp

+0

我建议在for循环中使用'enumerate'函数。这样你就不需要单独的语句来处理'i'。因此'对于我,each_item列举(newitems)'。 – kindall