Python:循环多个列表并创建一个元组

Python:循环多个列表并创建一个元组,python,Python,我有两个数据列表,我想为这个列表创建一个元组 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])

我有两个数据列表,我想为这个列表创建一个元组

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])
您可以使用并结合使用以获得您想要的:

>>> 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])]
您可以使用并结合使用以获得您想要的:

>>> 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])]

您可以使用列表:

output = [(ii,[b,c,counter]) for ii,(b,c) in enumerate(zip(listA,listB))]

您可以使用列表:

output = [(ii,[b,c,counter]) for ii,(b,c) in enumerate(zip(listA,listB))]

您提供的代码有两个问题(我无论如何都能找到)。其中最大的一点是,您生成了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

您提供的代码有两个问题(我无论如何都能找到)。其中最大的一点是,您生成了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

你真的救了我一天。谢谢,我怎样才能联系上你,让你帮我做另一件事我有点问题,你真的救了我一天。谢谢你,我怎样才能联系到你,让你帮我做另一件我有问题的事