【问题标题】:mixing two lists same length python混合两个相同长度的列表python
【发布时间】:2021-11-11 07:26:57
【问题描述】:

我想将两个列表的每个元素相互混合,它们的长度相同:

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))]

【问题讨论】:

  • 请接受帮助您解决问题的答案。

标签: python list tuples


【解决方案1】:

用途:

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))]

【讨论】:

  • 输出不完全是我愿意得到的:)
【解决方案2】:

zipitertools.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))))

【讨论】:

  • b 是一个具有恒定长度的浮点数,因此 (_m, _m+b) 在这种情况下不起作用 TypeError: can only concatenate tuple (not "float") to tuple
猜你喜欢
  • 2017-11-30
  • 1970-01-01
  • 1970-01-01
  • 2019-10-16
  • 2017-12-24
  • 2023-01-22
  • 2021-07-22
  • 1970-01-01
  • 2019-04-27
相关资源
最近更新 更多