我有以下代码:
a = [1, 2, 3, 4, 5]
b = ['test1', 'test2', 'test3', 'test4', 'test5']
c = zip(a, b)
print c
这给了我一个输出:
[(1, 'test1'), (2, 'test2'), (3, 'test3'), (4, 'test4'), (5, 'test5')]
我真正想要的虽然看起来像这样:
[(1, 'test1'), (1, 'test2'), (1, 'test3'), (1, 'test4'), (1, 'test5')
(2, 'test1'), (2, 'test2'), (2, 'test3'), (2, 'test4'), (2, 'test5')
(3, 'test1'), (3, 'test2'), (3, 'test3'), (3, 'test4'), (3, 'test5')
(4, 'test1'), (4, 'test2'), (4, 'test3'), (4, 'test4'), (4, 'test5')
(5, 'test1'), (5, 'test2'), (5, 'test3'), (5, 'test4'), (5, 'test5')]
有人能告诉我如何修改上面的代码以获得我想要的输出吗?
由于
答案 0 :(得分:5)
你想要的是Cartesian Product。
import itertools
for i in itertools.product([1, 2, 3, 4, 5],['test1', 'test2', 'test3', 'test4', 'test5']):
print i
答案 1 :(得分:4)
您可以使用for
循环
c = []
for i in a:
for s in b:
c.append((i, s))
或等效列表理解,
c = [(i,s) for i in a for s in b]
或永远有用的itertools.product
,
import itertools
c = list(itertools.product(a, b))
答案 2 :(得分:1)
列表理解在这里工作:
>>> a = [1, 2, 3, 4, 5]
>>> b = ['test1', 'test2', 'test3', 'test4', 'test5']
>>> [ (x,y) for x in a for y in b ]
[(1, 'test1'), (1, 'test2'), (1, 'test3'), (1, 'test4'), (1, 'test5'), (2, 'test1'), (2, 'test2'), (2, 'test3'), (2, 'test4'), (2, 'test5'), (3, 'test1'), (3, 'test2'), (3, 'test3'), (3, 'test4'), (3, 'test5'), (4, 'test1'), (4, 'test2'), (4, 'test3'), (4, 'test4'), (4, 'test5'), (5, 'test1'), (5, 'test2'), (5, 'test3'), (5, 'test4'), (5, 'test5')]