【问题标题】:Combine lists alternating elements one by one or two by two一个接一个或两个接两个地组合列表交替元素
【发布时间】:2022-12-08 09:27:51
【问题描述】:

我有 4 个列表:

a = ["a1", "a2", "a3", "a4", "a5", "a6", "a7", "a8"]

b = ["b1", "b2", "b3", "b4", "b5", "b6"]

c = ["c1", "c2", "c3", "c4", "c5"]

d = ["d1", "d2", "d3", "d4", "d5", "d6", "d7"]

我需要创建一个列表,一个一个地交替使用元素,直到可能为止,但是对于最后一个列表,我需要将它们 2 乘 2(也直到可能)。所以结果应该是:

new_list = ["a1", "b1", "c1", "d1", "d2", "a2", "b2", "c2", "d3", "d4", "a3", "b3", 
            "c3", "d5", "d6", "a4", "b4", "c4", "d7", "a5", "b5", "c5", "a6", "b6", 
            "a7", "a8"]

我知道要一个一个交替使用,您可以使用 itertools,例如:

import itertools
book_list = [x for x in itertools.chain.from_iterable(itertools.zip_longest(a,b, c, d)) if x is not None]

但是我确实要确保 list d 我采用 2 个元素而不是一个元素?我能以某种方式在列表 d 上引入 pairwise() 吗?

【问题讨论】:

    标签: list python-itertools pairwise


    【解决方案1】:

    您可以从 dzip 创建一个迭代器两次,以便每次迭代从序列中提取两次:

    d2 = iter(d)
    new_list = list(filter(None, chain.from_iterable(zip_longest(a, b, c, d2, d2))))
    

    演示:https://replit.com/@blhsing/MarriedOrderlyPoint

    【讨论】:

      猜你喜欢
      • 2021-09-19
      • 2013-04-16
      • 2021-11-09
      • 2016-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-16
      • 1970-01-01
      相关资源
      最近更新 更多