python - 如何合并列表,但保持先前列表的顺序?

标签 python list merge

使用下面的方法合并此列表后,我会得到此输出。

['description t2_HELP', 'description t2_1507', 'description t2_1189', 'description t2_5625', 'description None', 'description None', 'description None', 'description None', 'interface Gi3/0/13', 'interface Gi3/0/7', 'interface Gi1/0/11', 'interface Gi3/0/41']

但是,我希望在合并数据时保持数据的顺序。因此示例列表集如下所示。

['interface Gi3/0/25','description None','description t2_2696','interface Gi1/0/29','description None','description t2_4148','interface Gi1/0/31','description None','description t2_4212','interface Gi2/0/31','description None','description t2_4271']

这是我合并列表的方法,

joinlist = data1 + data2 + data3

列表看起来像这样

data1 = ['interface Gi3/0/25','interface Gi1/0/29','interface Gi1/0/31','interface Gi2/0/31']
data2 = ['description None','description None','description None','description None']
data3 = ['description t2_2696','description t2_4148','description t2_4212','description t2_4271']

最佳答案

如果您有相同长度的 list (zip) 或者不介意结果中的填充值 (zip_longest) >).

但从逻辑上讲,您在这里要求的是输入的循环,而不是压缩。通过扁平化,您会失去 zip 的配对方面,并且可能会因长度不均匀的输入而受到影响。

the itertools module's roundrobin recipe 提供了针对此问题的更通用的解决方案。 (单击代码链接,我只是在此处包含用法):

joinlist = list(roundrobin(data1, data2, data3))

按顺序从每个输入中获取一个元素;如果一个输入比其他输入短,则在后面的轮次中将其省略,而不会注入(inject)垃圾填充值或丢失较长输入中的值。

关于python - 如何合并列表,但保持先前列表的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56553332/

相关文章:

python - 带选定点的 3D 线图

python - 在 python 中打开 DBF 文件时出现问题

python - 给定索引开始分割Python列表

c# - C++ Vector 类似于 C# 中的类

sql - Oracle SQL 中将两张表合并为一张

python - 使用自定义字体的 Pytesseract 错误地对数字进行分类

python - Python 中的字符串操作。解析网址

python - 有没有使用元素树从 xml 文件创建多个数据框的方法?

java - 通过通用标签在java中高效合并2个大型csv文件

python - 合并多列上的两个 pandas 数据框