在Python中将列表连接为字符串

0 投票
3 回答
1277 浏览
提问于 2025-04-17 23:00

在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

你可以这样做。

l = [1, 2, 3, 4]
'\t'.join([str(x) for x in l])

join- Python文档

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 需要一个字符串的可迭代对象。

撰写回答