如何将字符串转换为列表?
如何将字符串转换为列表?
有人尝试了不同的方法,代码如下:
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中居然可以工作。
这种方法并没有什么实际意义,仅仅是为了展示一种可能的解决方案,并不高效。
问题的出现的原因:提问者想要将一个字符串转换为一个列表。
解决方法:使用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)。
好的,谢谢你让我检查一下。晚安。