使用下面的方法合并此列表后,我会得到此输出。
['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/