2012-09-17 25 views
221

是否有将列表中的字符串项连接成单个字符串的更简单的方法?将列表中的项连接到字符串

我可以使用str.join()函数来连接列表中的项目吗?

E.g.这是输入['this','is','a','sentence'],这是所需的输出this-is-a-sentence

sentence = ['this','is','a','sentence'] 
sent_str = "" 
for i in sentence: 
    sent_str += str(i) + "-" 
sent_str = sent_str[:-1] 
print sent_str 
+9

''''join(句子)' – aland

回答

461

使用join

>>> sentence = ['this','is','a','sentence'] 
>>> '-'.join(sentence) 
'this-is-a-sentence' 
+7

不明白,左边的' - '是什么意思? –

+4

@LawrenceDeSouza你想加入的字符串;请参阅[文档](https://docs.python.org/2/library/stdtypes.html#string-methods)或[此答案](http://stackoverflow.com/questions/1876191/explain-python加入)进入更多的细节。 –

+1

我预计'sentence.join(“”)'也可以工作,因为反向操作是'list.split(“”)'。任何想法,如果这将被添加到Python的列表方法? –

7

虽然@Burhan Khalid's answer是不错的,我觉得它更容易理解是这样的:

from str import join 

sentence = ['this','is','a','sentence'] 

join(sentence, "-") 

的join()的第二个参数是可选的,默认为“”。

编辑:Python中,删除了此功能3

+6

[此函数在2.x中已被弃用,并将在3.x中被删除](https://docs.python.org/2/library/string.html#deprecated-string-functions)情况就是如此,我不会推荐使用这个提供的其他答案。 –

+0

@Mathew Green这个答案和Burhan Khalid的答案以不同的方式使用相同的函数,所以他的答案也被弃用。但感谢您指出了这一点,找出了如何加入3.x.但是如果你使用2.x,它不会消失。 – SilentVoid

+1

虽然他没有被弃用。你的建议使用Lib/string.py中的一个函数,它完全不同于_and_弃用,而@BurhanKhalid答案使用内置的字符串方法,这个方法不被弃用。他的回答是现在和未来的最正确的答案,而现在只适用于2.x。 –

57

一个更通用的方法,以Python列表转换为字符串将是:

>>> 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' 
+1

为什么输入字符串时需要列表理解?如果没有枚举列表,也可以使用'map(str,my_lst)'= – alvas

+4

这个问题的大部分答案都是考虑列表中包含字符串的情况。 Mine是将列表转换为字符串的通用方法。在我的例子中,列表的类型是'int',但它可以是任何可以表示为字符串的类型。 –

+0

@alvas谢谢,更新了我的答案。 –

15

这是非常有用的初学者知道 why join is a string method

开始时非常奇怪,但在此之后非常有用。

连接的结果始终是一个字符串,但对象要加入可以有多种类型(发电机,列表,元组等)

.join是更快,因为它分配内存只有一次的。比经典连接更好。 extended explanation

一旦你了解它,这是非常舒适的,你可以做这样的技巧来添加圆括号。

>>> ",".join("12345").join(("(",")")) 
    '(1,2,3,4,5)' 

    >>> lista=["(",")"] 
    >>> ",".join("12345").join(lista) 
    '(1,2,3,4,5)' 
+0

哇,酷。有我的upvote :) – Blacksilver