繁体   English   中英

Python,2个列表之间所有可能的数字组合

[英]Python, all possible combinations of numbers between 2 lists

我是python的新手,我想要一些有问题的指导。

假设您有两个列表,长度相同且填充数字:

x=[0,1,2,3]
y=[0,4,5,6]

Python如何计算同一位置列表中数字之间的数字? 所以对于这个例子。

[0,1,2,3]
[0,2,2,3]
[0,3,2,3]
[0,4,2,3]
[0,1,3,3]
...

我希望有更多经验的人对此有所了解。

x=[0,1,2]
y=[0,4,5]

from itertools import product

for lst in product(*(range(a, b+1) for a, b in zip(x, y))):
    print(lst)
#>>> (0, 1, 2)
#>>> (0, 1, 3)
#>>> (0, 1, 4)
#>>> (0, 1, 5)
#>>> (0, 2, 2)
#>>> (0, 2, 3)
#>>> (0, 2, 4)
#>>> (0, 2, 5)
#>>> (0, 3, 2)
#>>> (0, 3, 3)
#>>> (0, 3, 4)
#>>> (0, 3, 5)
#>>> (0, 4, 2)
#>>> (0, 4, 3)
#>>> (0, 4, 4)
#>>> (0, 4, 5)

zipxy并产生(在这种情况下) [(0, 0), (1, 4), (2, 5)]

for a, b in ,每对都将其拆包成ab ,因此对于第二对a = 1b = 4

然后为每个range一个range 因为range(a, b+1)的最后一项被删除,所以它是range(a, b+1)

然后你有一个可迭代的范围:

[ range(0, 1), range(1, 5), range(2, 6) ]

product需要一些迭代,并且可以迭代所有可能的组合。 因此,您使用“*”运算符“解包”迭代器,因此product被称为

product(*[ range(0, 1), range(1, 5), range(2, 6) ])

这相当于

product(range(0, 1), range(1, 5), range(2, 6))

并产生结果。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM