1
的Python 3.6的Python:如果列表解析里声明发电机
考虑以下代码:
from itertools import groupby
result = [list(group) for key, group in groupby(range(5,15), key= lambda x: str(x)[0])]
print(result)
输出:
[[5], [6], [7], [8], [9], [10, 11, 12, 13, 14]]
我能够过滤列表与len < 2
名单内理解?
更新:
由于给出的两个优秀的答案。我觉得这可能是值得的长凳标记
import timeit
t1 = timeit.timeit('''
from itertools import groupby
result = [group_list for group_list in (list(group) for key, group in groupby(range(5,15), key= lambda x: str(x)[0])) if len(group_list) >= 2]
''', number=1000000)
print(t1)
t2 = timeit.timeit('''
from itertools import groupby
list(filter(lambda group: len(group) >= 2, map(lambda key_group: list(key_group[1]),groupby(range(5,15), key=lambda x: str(x)[0]))))
''', number=1000000)
print(t2)
结果:
8.74591397369441
9.647086477861325
貌似列表理解具有优势。
这是真棒!我知道必须有办法! –