将字符串与列表项合并

2024-06-02 05:59:11 发布

您现在位置:Python中文网/ 问答频道 /正文

所以,我试图“合并”一个字符串(a)和一个字符串列表(b):

a = '1234'
b = ['+', '-', '']

要获得所需的输出(c):

c = '1+2-34'

所需输出字符串中的字符在字符串和列表之间按原点交替。此外,该列表将始终包含一个小于字符串中字符数的元素。我想知道最快的方法是什么

到目前为止,我掌握的情况如下:

c = a[0]
for i in range(len(b)):
    c += b[i] + a[1:][i]
print(c)  # prints -> 1+2-34

但我觉得有更好的方法


Tags: 方法字符串in元素列表forlen情况
1条回答
网友
1楼 · 发布于 2024-06-02 05:59:11

您可以使用^{}zip这两个序列,然后即使在较短的序列用完字符后也继续迭代。如果您用完了字符,您将开始返回None,所以只需使用其余的数字字符

>>> from itertools import chain
>>> from itertools import zip_longest
>>> ''.join(i+j if j else i for i,j in zip_longest(a, b))
'1+2-34'

正如注释中建议的@deceze,还可以将fillvalue参数传递给zip_longest,后者将插入空字符串。我建议用他的方法,因为它可读性好一点

>>> ''.join(i+j for i,j in zip_longest(a, b, fillvalue=''))
'1+2-34'

@ShadowRanger建议的进一步优化是删除临时字符串连接(i+j),并用^{}调用替换它们

>>> ''.join(chain.from_iterable(zip_longest(a, b, fillvalue='')))
'1+2-34'

相关问题 更多 >