删除空白字符串中的所有小写字母python
''.join(c.lower() for c in s if not c.isspace())
不.Python不是Ruby。
>>> string=""" a b c
... D E F
... g
... """
>>> ''.join( i.lower() for i in string.split() )
'abcdefg'
>>>
OR
>>> ''.join(map(str.lower, string.split()) )
'abcdefg'
您的加入拆分解决方案仍然比John Machin的答案慢很多,使用timeit将其时钟数设置为0.733391046524s,对于250k代表,对于他的解决方案,则为0.413959026337s。以最快的速度前进! – radtek 2017-08-05 03:53:39
这里使用的解决方案正则表达式:
>>> import re
>>> test = """AB cd KLM
RST l
K"""
>>> re.sub('\s+','',test).lower()
'abcdklmrstlk'
这似乎是最慢的一组,在250k迭代中的0.809034109116s与John Machin的解决方案在0.411396980286s。地图也比0.582627058029s更快。 – radtek 2017-08-05 03:47:10
怎么样一个简单快速答案吗?没有map
,没有for
环路,...
>>> s = "Foo Bar " * 5
>>> s
'Foo Bar Foo Bar Foo Bar Foo Bar Foo Bar '
>>> ''.join(s.split()).lower()
'foobarfoobarfoobarfoobarfoobar'
>>>
[Python的2.7.1]
>python -mtimeit -s"s='The quick brown Fox jumped over the lazy dogs'" "''.join(c.lower() for c in s if not c.isspace())"
100000 loops, best of 3: 11.7 usec per loop
>python27\python -mtimeit -s"s='The quick brown Fox jumped over the lazy dogs'" "''.join( i.lower() for i in s.split() )"
100000 loops, best of 3: 3.11 usec per loop
>python27\python -mtimeit -s"s='The quick brown Fox jumped over the lazy dogs'" "''.join(map(str.lower, s.split()) )"
100000 loops, best of 3: 2.43 usec per loop
>\python27\python -mtimeit -s"s='The quick brown Fox jumped over the lazy dogs'" "''.join(s.split()).lower()"
1000000 loops, best of 3: 1 usec per loop
+1不妨使用最快,最正确的选项。 – samplebias 2011-04-27 21:56:10
+1,确实是我目前看到的最快的。用timeit模块确认使用250k迭代0.403948068619s使用split,0.585318088531s使用map。谢谢! – radtek 2017-08-05 03:43:38
是正则表达式的东西是在Python用得少? – 2011-04-27 04:04:11
正则表达式通常不是必需的。 – 2011-04-27 04:05:43
@DutrowLLC,它们通常不是必需的,但有时它们是不可或缺的。 – ghostdog74 2011-04-27 04:07:49