Concatenate elements of a list
我有一张像l=['a', 'b', 'c']这样的单子我想要一根像"abc"这样的绳子。所以事实上,结果是l[0]+l[1]+l[2],也可以写成
1 2 3
| s = ''
for i in l:
s += i |
有什么方法可以更优雅地完成这个任务吗?
使用str.join():
调用它的字符串用作l中字符串之间的分隔符:
1 2 3 4 5 6 7
| >>> l=['a', 'b', 'c']
>>> ''.join(l)
'abc'
>>> '-'.join(l)
'a-b-c'
>>> ' - spam ham and eggs - '.join(l)
'a - spam ham and eggs - b - spam ham and eggs - c' |
使用str.join()比一个接一个地连接元素快得多,因为它必须为每个连接创建一个新的字符串对象。str.join()只需要创建一个新的字符串对象。
注意,str.join()将在输入序列上循环两次。一次计算输出字符串需要有多大,然后再次构建它。作为副作用,这意味着使用列表理解而不是生成器表达式更快:
1 2
| slower_gen_expr = ' - '.join('{}: {}'.format(key, value) for key, value in some_dict)
faster_list_comp = ' - '.join(['{}: {}'.format(key, value) for key, value in some_dict]) |
- +1个25秒的Q/A偏移量很难匹配……
- 忍者再次攻击。
- 一个很好的链接:stackoverflow.com/questions/3055477/…我喜欢这个答案对于一个真正基本的问题是如何如此详细的。
- 这是一个闪电般的答案。谢谢!@贾米拉克:"真正的基础"是"真正的相对"。
- @Tengis Google搜索非常简单,如果我搜索你的问题标题,我会找到:stackoverflow.com/questions/5850986/…,这个答案列在问题描述中。
- @杰米拉克:我不同意。我没有更新函数"join",所以我怎么能谷歌"join elements in python?"我认为这是一个串联问题。
- @滕吉斯一世搜查了埃多克斯一〔0〕。
- @杰米拉克:对你很好。最好是谦虚。
- @滕尼斯好吧,对不起,我没什么不好的意思