繁体   English   中英

如何在Python中串联元素列表?

[英]How to concatenate element-wise a list in Python?

我有一个字符串列表,我想通过以下方式连接列表中的元素:

before = ['a', 'b', 'c', 'd']

after = ['ab', 'bc', 'cd']

我不确定如何调用上述操作。

但是,我尝试使用range方法:

after = [before[i]+before[i+1] for i in range(0,len(before),2)]

但结果是: after = ['ab', 'cd']

您的方法不允许重叠,因为您的索引增加了2。

一个快速修复将是

after = [before[i]+before[i+1] for i in range(len(before)-1)]

但是我宁愿使用切片版本的列表来zip列表:

before = ['a', 'b', 'c', 'd']

after = [a+b for a,b in zip(before,before[1:])]

>>> after
['ab', 'bc', 'cd']

您也可以使用tee

from itertools import tee

before = ['a', 'b', 'c', 'd']
c, n = tee(before, 2)
next(n)

after = [cu + ne for cu, ne in zip(c, n)]
print(after)

输出量

['ab', 'bc', 'cd']

进一步

  1. Itertools食谱

itertools ,可以使用一个有用的方法:

def pairwise(iterable):
    "s -> (s0,s1), (s1,s2), (s2, s3), ..."
    a, b = tee(iterable)
    next(b, None)
    return zip(a, b)

>>> map(lambda x: ''.join(x), pairwise(before))
['ab', 'bc', 'cd']

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM