0

有没有办法从字符串中制作:

"I like Python!!!"

像这样的列表

['I', 'l', 'i', 'k', 'e', 'P', 'y', 't', 'h', 'o', 'n', '!', '!', '!']
4

4 回答 4

13

使用列表理解

>>> mystr = "I like Python!!!"
>>> [c for c in mystr if c != " "]
['I', 'l', 'i', 'k', 'e', 'P', 'y', 't', 'h', 'o', 'n', '!', '!', '!']
>>> [c for c in mystr if not c.isspace()] # alternately
['I', 'l', 'i', 'k', 'e', 'P', 'y', 't', 'h', 'o', 'n', '!', '!', '!']
>>>
于 2013-08-15T16:04:56.923 回答
6

看起来您不希望结果列表中有任何空格,因此请尝试:

>>> s = "I like Python!!!"
>>> list(s.replace(' ',''))
['I', 'l', 'i', 'k', 'e', 'P', 'y', 't', 'h', 'o', 'n', '!', '!', '!']

但是你确定你需要一个清单吗?请记住,在大多数情况下,字符串可以像列表一样对待:它们是序列并且可以迭代,并且许多接受列表的函数也接受字符串。

>>> for c in ['a','b','c']:
...     print c
... 
a
b
c
>>> for c in 'abc':
...     print c
... 
a
b
c
于 2013-08-15T16:12:00.640 回答
1

还,

list("I like Python!!!")

输出:

['I', ' ', 'l', 'i', 'k', 'e', ' ', 'P', 'y', 't', 'h', 'o', 'n', '!', '!', '!']

速度比较:

$ python -m timeit 'list("I like Python!!!")'
1000000 loops, best of 3: 0.783 usec per loop
$ python -m timeit '[x for x in "I like Python!!!"]'
1000000 loops, best of 3: 1.79 usec per loop
于 2013-08-15T16:07:39.250 回答
1

并不是说这比其他的好……但是理解很有趣!

[x for x in 'I like Python']
于 2013-08-15T16:09:07.330 回答