在Python中将列表连接为字符串
在Python中,怎么最简单地把一个列表变成字符串呢?
如果想从一个字符串创建一个列表:
s='1\t2\t3\t4'
我们可以用:
s.split('\t',-1)
我试着用split函数把一个列表变成字符串:
l=[1,2,3,4]
但是我遇到了一个AttributeError
错误,提示说列表没有split这个属性。
3 个回答
0
这不是分割,而是连接:'\t'.join(str(i) for i in l)
1
9
str.split
是一个只能在 str
类型上使用的方法。它的工作原理在 文档 中有解释:
str.split([sep[, maxsplit]])
这个方法会把字符串中的单词分开,使用
sep
作为分隔符。如果给定了maxsplit
,那么最多会进行maxsplit
次分割(这样,返回的列表最多会有maxsplit+1
个元素)。如果没有指定maxsplit
或者它的值是-1
,那么就没有分割次数的限制(会进行所有可能的分割)。
你在这里想要使用的是 str.join
:
>>> l = [1, 2, 3, 4]
>>> map(str, l) # Just to demonstrate
['1', '2', '3', '4']
>>> '\t'.join(map(str, l))
'1\t2\t3\t4'
>>>
根据 文档:
str.join(iterable)
这个方法会返回一个字符串,它是将可迭代对象
iterable
中的字符串连接起来的结果。元素之间的分隔符就是调用这个方法的字符串。
在上面的例子中,str.join
会处理由 map(str, l)
返回的字符串列表:
['1', '2', '3', '4']
并把所有的项目连接在一起,每个项目之间用 \t
分隔。结果是这个字符串:
'1\t2\t3\t4'
另外,如果你想知道,上面的例子中使用的 map
是用来把整数列表转换成字符串列表的。另一种方法是使用 列表推导式:
>>> l = [1, 2, 3, 4]
>>> '\t'.join([str(x) for x in l])
'1\t2\t3\t4'
>>>
这两种方法基本上是等价的,但你需要使用其中一种,因为 str.join
需要一个字符串的可迭代对象。