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)并用itertools.chain.from_iterable
调用替换它们
>>> ''.join(chain.from_iterable(zip_longest(a,fillvalue='')))'1+2-34'总结
以上是内存溢出为你收集整理的python – 将字符串与列表条目合并 – 交替全部内容,希望文章能够帮你解决python – 将字符串与列表条目合并 – 交替所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)