有没有一种更简单的方法将列表中的字符串项连接到单个字符串中?
我可以使用str.join()函数来连接列表中的项目吗?
例如,这是输入['this','is','a','sentence'],这是期望的输出this-is-a-sentence
1 2 3 4 5 6
| sentence = ['this','is','a','sentence']
sent_str =""
for i in sentence:
sent_str += str(i) +"-"
sent_str = sent_str[:-1]
print sent_str |
使用join:
1 2 3
| >>> sentence = ['this','is','a','sentence']
>>> '-'.join(sentence)
'this-is-a-sentence' |
- 不明白,左边的"-"应该是什么??
- @LawrenceDeSouza你想加入的字符串;请参阅文档,或者更详细的答案。
- 我希望sentence.join("")也能工作,因为反向操作是list.split("")。您知道这是否要添加到Python的列表方法中吗?
- @Wouter,它不会。一方面,只能连接字符串列表;因此list.join不适用于任意列表。另一方面,str.join的参数可以是任何字符串的"可迭代"序列,而不仅仅是一个列表。唯一有意义的是内置函数join(list, sep);如果您真的想要的话,在(基本上已经过时的)string模块中有一个。
- Python列表可以包含混合类型的元素,而且它并不总是可连接的,这确实是有意义的。谢谢!
- 如果我们希望输出为this is a sentence会怎样?
- @Leo ' '.join(['this', 'is', 'a', 'sentence'])
将python列表转换为字符串的一种更通用的方法是:
1 2 3 4
| >>> my_lst = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> my_lst_str = ''.join(map(str, my_lst))
>>> print(my_lst_str)
'12345678910' |
- 当输入是字符串时,为什么列表理解是必要的?而且map(str, my_lst)如果不枚举列表=)就足够了。
- 这个问题的大多数答案都考虑到列表中包含字符串的情况。我的是一种将列表转换为字符串的通用方法。在我的示例中,列表的类型是int,但是它可以是任何可以表示为字符串的类型。
- 这对混合类型列表很有用!
- 此外,map在与lambda函数一起使用时也很有用。例如,' '.join(map(lambda x: ' $'+ str(x), my_lst))将返回'$1 $2 $3 $4 $5 $6 $7 $8 $9 $10'
- 添加map实际上有助于处理字符串之外的数据类型。太棒了!
这对初学者来说非常有用为什么join是一个string方法
开始的时候很奇怪,但之后就很有用了。
join的结果总是一个字符串,但是要连接的对象可以是多种类型(生成器、列表、元组等)
.join更快,因为它只分配一次内存。比经典级联更好。扩展的解释
一旦你学会了它,你会觉得很舒服,你可以像这样做来添加括号。
1 2 3 4 5 6
| >>>",".join("12345").join(("(",")"))
'(1,2,3,4,5)'
>>> lista=["(",")"]
>>>",".join("12345").join(lista)
'(1,2,3,4,5)' |
虽然@Burhan Khalid的回答很好,但我觉得这样更容易理解:
1 2 3 4 5
| from str import join
sentence = ['this','is','a','sentence']
join(sentence,"-") |
join()的第二个参数是可选的,默认值为""。
编辑:这个函数在python3中被删除了
- 这个函数在2中被弃用。然后在3。在这种情况下,我不建议使用这个而不是提供的其他答案。
- @Mathew Green这个答案和Burhan Khalid的答案以不同的方式使用了相同的功能,所以他的答案也不受欢迎。但谢谢你指出这一点,gota找到了加入3.x的方法。但如果你用的是2。x,它不会消失。
- 不过,他的观点并没有遭到反对。您的建议使用Lib/string.py中的一个函数,这是完全不同的,是不推荐的,而@BurhanKhalid answer使用的是内置的string方法,是不推荐的。他的答案现在是最正确的,以后也是正确的,而这只适用于2。x。
- 所有这一切都表明,如果你想推广这一替代方案,你还应该包括一个警告:由于我在前面的评论中概述的原因,不建议这样做。
我们还可以使用python内置的reduce:-功能
from functools import reduce
sentence = ['this','is','a','sentence']
out_str=str(reduce(lambda x,y:x+"-"+y,sentence))
print(out_str)
我希望这能有所帮助:)