如何在不使用嵌套for循环的情况下迭代两个列表?

时间:2018-05-06 17:57:04

标签: python algorithm

如果a和b是两个列表,那么如何在不使用python中的嵌套for循环的情况下得到c?

a=[1,2,3] 
b=[4,5,6] 
c=[(1,4),(1,5),(1,6),(2,4),(2,5),(2,6),(3,4),(3,5),(3,6)] 

假设我必须找到由这些对形成的所有第n个斐波纳契序列的总和作为前两个数,其中n是任何正数。 在这种情况下,63中的n = 3答案。

>     1 4 5 nth term in 5  1 5 6 nth term in 6  . . . 3 6 9 nth term in 9 
>            > Sum of all nth term in 63.

2 个答案:

答案 0 :(得分:4)

只需使用product包中的itertools方法。

a=[1,2,3] 
b=[4,5,6]
c = list(itertools.product(a,b))
print(c)

输出

[(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]

答案 1 :(得分:1)

这是numpy的替代方法:

import numpy as np

zip(np.repeat(a, 3), np.tile(b, 3))

# [(1, 4), (1, 5), (1, 6), (2, 4), (2, 5), (2, 6), (3, 4), (3, 5), (3, 6)]