FUB*_*Rnl 2 python combinations list
我是python的新手,我想要一些有问题的指导.
假设您有两个列表,长度相同且填充数字:
x=[0,1,2,3]
y=[0,4,5,6]
Run Code Online (Sandbox Code Playgroud)
Python如何计算同一位置列表中数字之间的数字?所以对于这个例子.
[0,1,2,3]
[0,2,2,3]
[0,3,2,3]
[0,4,2,3]
[0,1,3,3]
...
Run Code Online (Sandbox Code Playgroud)
我希望有更多经验的人能对这件事有所了解.
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)
Run Code Online (Sandbox Code Playgroud)
zip取x和y,并产生(在这种情况下)[(0, 0), (1, 4), (2, 5)].
该for a, b in取每对然后解压缩到a和b,因此对于第二a = 1和b = 4.
然后range为每个人做一个.这是range(a, b+1)因为该范围中的最后一项被删除.
然后你有一个可迭代的范围:
[ range(0, 1), range(1, 5), range(2, 6) ]
Run Code Online (Sandbox Code Playgroud)
product采用一些迭代并使所有可能组合的迭代.所以你用"*"运算符"解包"迭代,所以product被称为
product(*[ range(0, 1), range(1, 5), range(2, 6) ])
Run Code Online (Sandbox Code Playgroud)
这相当于
product(range(0, 1), range(1, 5), range(2, 6))
Run Code Online (Sandbox Code Playgroud)
并产生结果.
| 归档时间: |
|
| 查看次数: |
584 次 |
| 最近记录: |