以交替顺序组合python中不同长度的众多列表

 shaonan 发布于 2023-02-13 15:21

如果我有几个列表

我能够将列表1与列表2结合起来,但是,我还没有成功地将其他列表组合起来.

def alternator():
    iets = []
    for i in range(len(list2)): 
        something += [list1[i]]
        something +=[list2[i]]
    result = something
    result_weaver(result)

def result(x):
    list31 = list3
    if len(list3) < len(x) :
        while len(list31) != len(x):
            list31 += '-'

我决定添加' - '以确保两个列表的长度相等,因此for循环可以起作用.

有没有人对如何编程这个有更好的想法?

1 个回答
  • itertools.zip_longest()在这里使用:

    try:
        from itertools import zip_longest
    except ImportError:
        # Python 2
        from itertools import izip_longest as zip_longest
    
    def alternate(list1, list2):
        return [v for v in sum(zip_longest(list1, list2), ()) if v is not None]
    

    zip_longest()调用添加None占位符(类似于您自己尝试添加-字符),我们需要sum()在压缩后再从输出中删除.

    演示:

    >>> alternate(list1, list2)
    ['1', '5', '2', '6', '3', '7', '8']
    >>> alternate(alternate(list1, list2), list3)
    ['1', '9', '5', '2', '6', '3', '7', '8']
    

    2023-02-13 15:23 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有