将列表中的项连接到字符串

时间:2012-09-17 05:32:25

标签: python string list join concatenation

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

我可以使用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

11 个答案:

答案 0 :(得分:772)

使用join

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

答案 1 :(得分:96)

将python列表转换为字符串的更通用的方法是:

{{1}}

答案 2 :(得分:31)

这对初学者来说非常有用 why join is a string method

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

join的结果总是一个字符串,但是要连接的对象可以是多种类型(生成器,列表,元组等)

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

一旦你学会了它,它就会非常舒服,你可以做这样的技巧来添加括号。

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

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

答案 3 :(得分:13)

虽然@Burhan Khalid's answer很好,但我认为这样可以理解:

from str import join

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

join(sentence, "-") 

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

编辑:此功能已在Python 3中删除

答案 4 :(得分:2)

我们还可以使用reduce的python内置功能:-

  

从functools导入reduce

     

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

     

out_str = str(reduce(lambda x,y:x +“-” + y,sentence))

     

print(out_str)

我希望这会有所帮助:)

答案 5 :(得分:1)

我们可以指定我们如何连接字符串。代替'-',我们可以使用''

sentence = ['this','is','a','sentence']
s=(" ".join(sentence))
print(s)

答案 6 :(得分:1)

这肯定会有所帮助-

arr=['a','b','h','i']     # let this be the list
s=""                      # creating a empty string
for i in arr:
   s+=i                   # to form string without using any function
print(s) 


       

答案 7 :(得分:1)

list = ['aaa', 'bbb', 'ccc']

string = ''.join(list)
print(string)
>>> aaabbbccc

string = ','.join(list)
print(string)
>>> aaa,bbb,ccc

string = '-'.join(list)
print(string)
>>> aaa-bbb-ccc

string = '\n'.join(list)
print(string)
>>> aaa
>>> bbb
>>> ccc

答案 8 :(得分:1)

如果您有混合内容列表。并想对其进行字符串化。 这是一种方法:

考虑这个列表:

>>> aa
[None, 10, 'hello']

将其转换为字符串:

>>> st = ', '.join(map(str, map(lambda x: f'"{x}"' if isinstance(x, str) else x, aa)))
>>> st = '[' + st + ']'
>>> st
'[None, 10, "hello"]'

如果需要,转换回列表:

>>> ast.literal_eval(st)
[None, 10, 'hello']

答案 9 :(得分:0)

如果要在最终结果中生成由逗号分隔的字符串,则可以使用以下内容:

sentence = ['this','is','a','sentence']
sentences_strings = "'" + "','".join(sentence) + "'"
print (sentences_strings) # you will get "'this','is','a','sentence'"

我希望这可以帮助某人。

答案 10 :(得分:0)

没有.join()方法,您可以使用以下方法:

my_list=["this","is","a","sentence"]

concenated_string=""
for string in range(len(my_list)):
    if string == len(my_list)-1:
        concenated_string+=my_list[string]
    else:
        concenated_string+=f'{my_list[string]}-'
print([concenated_string])
    >>> ['this-is-a-sentence']

因此,在此示例中,基于范围的for循环,当python到达列表的最后一个字时,不应在您的concenated_string中添加“-”。如果不是字符串的最后一个单词,请始终在您的concenated_string变量后附加“-”字符串。