2 python merge conditional list
说我有两个清单
[16, 0, 0, ';', 17, 0, 2, ';', 0, 2, 1, ';']
[-1, 0, ';', 0, -2, ';', -2, -1, ';']
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来合并这些列表元素有条件地满足';' 字符比单独迭代它们并组合它们?
输出应该是
[16, 0, 0, -1, 0, ';', 17, 0, 2, 0, -2, ';', 0, 2, 1, -2, -2,';']
Run Code Online (Sandbox Code Playgroud)
def get_part(lst,sep=';'):
out = []
for i in lst:
if i == sep:
yield out
out = []
else:
out.append(i)
Run Code Online (Sandbox Code Playgroud)
现在我们可以将您的列表压缩:
merged = []
for l1,l2 in zip(get_part(list1),get_part(list2)):
merged.extend(l1)
merged.extend(l2)
merged.append(';')
Run Code Online (Sandbox Code Playgroud)
当然,在它的核心,这基本上是迭代它们并结合......所以在回答你的问题时,我认为没有更好的方法.
也许存储列表的更好方法是将它们存储为列表列表 - 例如:
list1 = [[16, 0, 0], [ 17, 0, 2], [ 0, 2, 1] ]
Run Code Online (Sandbox Code Playgroud)
像这样存储,你可以这样做:
merged = [ l1 + l2 for l1,l2 in zip(list1,list2) ]
Run Code Online (Sandbox Code Playgroud)