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
貌似列表理解具有優勢。
這是真棒!我知道必須有辦法! –