如何将字符串转换为列表?

31 浏览
0 Comments

如何将字符串转换为列表?

如果我有一个字符串:

a = 'hello'

如何将其转换为列表?

a = ['h', 'e', 'l', 'l', 'o']

0
0 Comments

如何将字符串转换为列表?

有人尝试了不同的方法,代码如下:

map(None,"sart")#for python 2.x
#list(map(None,"sart")) for python 3.x

输出结果为:

['s', 'a', 'r', 't']

有人质疑为什么这样做,但未给出具体原因。

实际上,`map`函数接受一个可迭代对象和一个函数作为参数,然后将可迭代对象的每个元素依次传递给函数,并将函数的输出结果组成一个列表返回。关于`map`函数的更多信息可以参考这个链接:[http://stackoverflow.com/questions/10973766](http://stackoverflow.com/questions/10973766)

需要注意的是,这种方法只适用于Python 2,而在Python 3中需要使用类似`list(map(None,"sart"))`的方式。

另外,你也可以使用`map(str,"sart")`来实现相同的效果。

在Python 3.5中,使用`list(map(None, 'sart'))`会出现`TypeError: 'NoneType' object is not callable`的错误,这是我所预料的。我很惊讶这种方法在Python 2中居然可以工作。

这种方法并没有什么实际意义,仅仅是为了展示一种可能的解决方案,并不高效。

0
0 Comments

问题的出现的原因:提问者想要将一个字符串转换为一个列表。

解决方法:使用list()函数将字符串转换为列表。

文章内容如下:

一个字符串是可迭代的,而一个列表可以从可迭代的对象中构建。所以你只需要使用list()函数将字符串转换为列表。

a = list(a)
print(a)

输出:

['h', 'e', 'l', 'l', 'o']

好的,这个方法有效,谢谢!

注意:列表推导式 `[c for c in a]` 应该更快。我听说正好相反的说法。如果你有任何证据来支持这个观点,我们很愿意看到它!(我在你发的链接中没有找到)

我刚刚测试了一下,很难说。使用命令 `python3 -mtimeit -s'l=list(range(1000000))'` 和 `python3 -mtimeit -s'l=[el for el in range(1000000)]'` 。有时候一个快一些,有时候另一个快一些。我可能误解了几天前在这里进行的讨论。

我也是一样,我从来没有发现两者之间有明显的差异(在Python 2中,没有尝试过Python 3)。

好的,谢谢你让我检查一下。晚安。

0