我有一个列表,就像l=['a', 'b', 'c']
我想要一个像'abc'这样的字符串。所以实际上结果是l[0]+l[1]+l[2]
,也可以写成
s = ''
for i in l:
s += i
有没有办法更优雅地做到这一点?
我有一个列表,就像l=['a', 'b', 'c']
我想要一个像'abc'这样的字符串。所以实际上结果是l[0]+l[1]+l[2]
,也可以写成
s = ''
for i in l:
s += i
有没有办法更优雅地做到这一点?
使用str.join()
:
s = ''.join(l)
您调用它的字符串用作以下字符串之间的分隔符l
:
>>> 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()
将循环输入序列两次。一次计算输出字符串需要多大,然后再次构建它。作为副作用,这意味着使用列表推导而不是生成器表达式更快:
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])