python – 将字符串与列表条目合并 – 交替
发布时间:2020-12-20 11:54:06 所属栏目:Python 来源:网络整理
导读:所以,我试图“合并”一个字符串(a)和一个字符串列表(b): a = '1234'b = ['+','-',''] 获得所需的输出(c): c = '1+2-34' 所需输出字符串中的字符在字符串和列表之间的原点方面交替.此外,列表将始终包含一个小于字符串中字符的元素.我想知道最快的方法是什么
所以,我试图“合并”一个字符串(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 但我觉得有更好的方法来做到这一点.. 解决方法
您可以使用
itertools.zip_longest 来压缩两个序列,然后在较短的序列用完字符后继续迭代.如果你的字符用完了,你就会开始获得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,b,fillvalue='')) '1+2-34' @ShadowRanger建议的进一步优化是删除临时字符串连接(i j)并用 >>> ''.join(chain.from_iterable(zip_longest(a,fillvalue=''))) '1+2-34' (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容