混合两个相同长度的列表 python
mixing two lists same length python
我想将两个列表的每个元素相互混合,它们的长度相同:
list1 = [(m0, m0+b), (m1, m1+b), (m2, m2+b),...]
list2 = [(n0, n0+b), (n1, n1+b), (n2, n2+b),...]
创建这样的列表:
new_list = [((m0, m0+b), (n0, n0+b)), ((m0, m0+b), (n1, n1+b)), ((m0, m0+b), (n2, n2+b)),..., ((m1, m1+b), (n0, n0+b)), ((m1, m1+b), (n1, n1+b)), ((m1, m1+b), (n2, n2+b)), ..., ((m2, m2+b), (n0, n0+b)), ((m2, m2+b), (n1, n1+b)), ((m2, m2+b), (n2, n2+b)), ...]
更新:
解决方案
from itertools import product
list(product(list1, list2))
[((m0, m0+b), (n0, n0+b)),
((m0, m0+b), (n1, n1+b)),
((m0, m0+b), (n2, n2+b)),
((m1, m1+b), (n0, n0+b)),
((m1, m1+b), (n1, n1+b)),
((m1, m1+b), (n2, n2+b)),
((m2, m2+b), (n0, n0+b)),
((m2, m2+b), (n1, n1+b)),
((m2, m2+b), (n2, n2+b))]
使用:
from itertools import product
list(product(list1, list2))
[((m0, m0+b), (n0, n0+b)),
((m0, m0+b), (n1, n1+b)),
((m0, m0+b), (n2, n2+b)),
((m1, m1+b), (n0, n0+b)),
((m1, m1+b), (n1, n1+b)),
((m1, m1+b), (n2, n2+b)),
((m2, m2+b), (n0, n0+b)),
((m2, m2+b), (n1, n1+b)),
((m2, m2+b), (n2, n2+b))]
使用 zip
和 itertools.chain
的理解
from itertools import chain
m = [ ... ]
n = [ ... ]
b = ...
new_list = list(chain(*(((m1, m2+b), (n1, n2+b)) for (m1, m2), (n1, n2) in zip(m, n))))
我想将两个列表的每个元素相互混合,它们的长度相同:
list1 = [(m0, m0+b), (m1, m1+b), (m2, m2+b),...]
list2 = [(n0, n0+b), (n1, n1+b), (n2, n2+b),...]
创建这样的列表:
new_list = [((m0, m0+b), (n0, n0+b)), ((m0, m0+b), (n1, n1+b)), ((m0, m0+b), (n2, n2+b)),..., ((m1, m1+b), (n0, n0+b)), ((m1, m1+b), (n1, n1+b)), ((m1, m1+b), (n2, n2+b)), ..., ((m2, m2+b), (n0, n0+b)), ((m2, m2+b), (n1, n1+b)), ((m2, m2+b), (n2, n2+b)), ...]
更新:
解决方案
from itertools import product
list(product(list1, list2))
[((m0, m0+b), (n0, n0+b)),
((m0, m0+b), (n1, n1+b)),
((m0, m0+b), (n2, n2+b)),
((m1, m1+b), (n0, n0+b)),
((m1, m1+b), (n1, n1+b)),
((m1, m1+b), (n2, n2+b)),
((m2, m2+b), (n0, n0+b)),
((m2, m2+b), (n1, n1+b)),
((m2, m2+b), (n2, n2+b))]
使用:
from itertools import product
list(product(list1, list2))
[((m0, m0+b), (n0, n0+b)),
((m0, m0+b), (n1, n1+b)),
((m0, m0+b), (n2, n2+b)),
((m1, m1+b), (n0, n0+b)),
((m1, m1+b), (n1, n1+b)),
((m1, m1+b), (n2, n2+b)),
((m2, m2+b), (n0, n0+b)),
((m2, m2+b), (n1, n1+b)),
((m2, m2+b), (n2, n2+b))]
使用 zip
和 itertools.chain
from itertools import chain
m = [ ... ]
n = [ ... ]
b = ...
new_list = list(chain(*(((m1, m2+b), (n1, n2+b)) for (m1, m2), (n1, n2) in zip(m, n))))