加入清单:
>>> ''.join([ str(_) for _ in xrange(10) ])
'0123456789'
Run Code Online (Sandbox Code Playgroud)
join 必须采取迭代.
显然,join这个论点是[ str(_) for _ in xrange(10) ],这是一个列表理解.
看这个:
>>>''.join( str(_) for _ in xrange(10) )
'0123456789'
Run Code Online (Sandbox Code Playgroud)
现在,join这个论点只是str(_) for _ in xrange(10),不[],但结果是一样的.
为什么?是否str(_) for _ in xrange(10)也会产生一个列表或一个可迭代?
我正在回答这个问题,我更喜欢这里的生成器表达并使用它,我认为它会更快,因为生成器不需要先创建整个列表:
>>> lis=[['a','b','c'],['d','e','f']]
>>> 'd' in (y for x in lis for y in x)
True
Run Code Online (Sandbox Code Playgroud)
Levon在他的解决方案中使用了列表理解,
>>> lis = [['a','b','c'],['d','e','f']]
>>> 'd' in [j for i in mylist for j in i]
True
Run Code Online (Sandbox Code Playgroud)
但是当我做这些LC的时间结果比生成器快时:
~$ python -m timeit -s "lis=[['a','b','c'],['d','e','f']]" "'d' in (y for x in lis for y in x)"
100000 loops, best of 3: 2.36 usec per loop
~$ python -m timeit -s "lis=[['a','b','c'],['d','e','f']]" "'d' in [y for x in lis for y …Run Code Online (Sandbox Code Playgroud) 是否可以使用正则表达式删除文本中的小词?例如,我有以下字符串(文本):
anytext = " in the echo chamber from Ontario duo "
Run Code Online (Sandbox Code Playgroud)
我想删除3个字符或更少的所有单词.结果应该是:
"echo chamber from Ontario"
Run Code Online (Sandbox Code Playgroud)
是否可以使用正则表达式或任何其他python函数?
谢谢.