Python:交错插入两个列表中项目的最短方法


9

我正在尝试以最短的方式(可能的字符)获得清单3。

清单1和清单2已作为参数提供给我,并且长度相同。

l1 = [1, 2, 3, 4, 5]
l2 = ['a', 'b', 'c', 'd', 'e']

清单3应该看起来像(是的,它必须是一个清单):

l3 = ['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]

2
你的目标是从字面上输出的具体名单l3 = ['a', 1, 'b', 2, 'c', 3, 'd', 4, 'e', 5]给出l1 = [1, 2, 3, 4, 5]l2 = ['a', 'b', 'c', 'd', 'e']已经分配,或者是想法l1,并l2可能是相同长度的任何两个列表?
xnor

Answers:


13

邮编和总和

[*sum(zip(l2,l1),())]

在线尝试!

将两个列表压缩在一起,然后将所有元组相加,以形成一个组合列表。只有在保证列表大小相同的情况下,该zip才有效,否则会截断较长的列表。

[* ]按照FryAmTheEggman的建议,添加了周围内容以将其转换为列表。


2
如果使用Python 2,则只能使用list而不是[* (...) ]+3个字节。
暴民埃里克(Erik the Outgolfer)'18年

7

切片分配

c=a*2
c[1::2]=a
c[::2]=b

这比使用Jo King的解决方案长三个字节c=[*sum(zip(b,a),())],但这很漂亮。在某些情况下它可能会更短(不过,我无法想到在哪里)。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.