我有2个数据列表,我想为这个列表创建一个看起来像
的元组ttuple=(1,[4,6,counter])
listA=[1,2,3,4,5,6,7,8,9]
listB=[3,4,5,7,8,9,0,-4,5]
counter=0
for i in range(len(listA)):
for lista in listA:
for listb in listB:
data=(i,[lista,listb,counter])
myList.append(data)
print(data)
仅打印最后一个值。有人能指出我做错了什么。它应该打印9个值的元组列表,如下所示。最后一个数字是一个递增1
的计数器(0,[1,3,0),(1,[2,4,0]),(2,[3,5,0])
我得到的是以下内容:
(0,[1,1]),(0,[1,1]),(0,[1,1]), (1,[2,2]),(1,[2,2]),(1,[2,2])
答案 0 :(得分:3)
>>> listA=[1,2,3,4,5,6,7,8,9]
>>> listB=[3,4,5,7,8,9,0,-4,5]
>>> output = []
>>> for i, a in enumerate(zip(listA, listB)):
... output.append((i, [a[0], a[1], 0]))
...
>>> output
[(0, [1, 3, 0]),
(1, [2, 4, 0]),
(2, [3, 5, 0]),
(3, [4, 7, 0]),
(4, [5, 8, 0]),
(5, [6, 9, 0]),
(6, [7, 0, 0]),
(7, [8, -4, 0]),
(8, [9, 5, 0])]
答案 1 :(得分:1)
您可以使用列表理解:
output = [(ii,[b,c,counter]) for ii,(b,c) in enumerate(zip(listA,listB))]
答案 2 :(得分:0)
您提供的代码存在两个问题(无论如何我都能找到)。最大的事实是你生成len(listA)** 2 * len(listB)元素!您不必迭代listA和listB,而是使用索引i访问两个列表中的元素。另一个问题是myList没有定义(但我假设你忘记了)。
以下是解决此问题的更有趣方式:
from itertools import izip
n = len(min(listA, listB))
result = list(enumerate(izip(listA, listB, xrange(n))))
print(result)
然而,这将为您提供无处不在的元组,以匹配确切的输出:
from itertools import izip
n = len(min(listA, listB))
result = list(enumerate(list(item) for item in izip(listA, listB, xrange(n))))
print result