有没有办法从字符串中制作:
"I like Python!!!"
像这样的列表
['I', 'l', 'i', 'k', 'e', 'P', 'y', 't', 'h', 'o', 'n', '!', '!', '!']
有没有办法从字符串中制作:
"I like Python!!!"
像这样的列表
['I', 'l', 'i', 'k', 'e', 'P', 'y', 't', 'h', 'o', 'n', '!', '!', '!']
使用列表理解:
>>> 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', '!', '!', '!']
>>>
看起来您不希望结果列表中有任何空格,因此请尝试:
>>> 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
还,
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
并不是说这比其他的好……但是理解很有趣!
[x for x in 'I like Python']