我有一个字符串列表,我想通过以下方式连接列表中的元素:
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']
答案 0 :(得分:5)
您的方法不允许重叠,因为您的索引增加了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']
答案 1 :(得分:1)
您也可以使用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']
进一步
答案 2 :(得分:0)
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']