Python 3.6Python: Si instruction à l'intérieur la compréhension de la liste sur un générateur
Considérez ce code:
from itertools import groupby
result = [list(group) for key, group in groupby(range(5,15), key= lambda x: str(x)[0])]
print(result)
sorties:
[[5], [6], [7], [8], [9], [10, 11, 12, 13, 14]]
Puis-je filtrer les listes avec len < 2
dans la liste compréhension?
Mise à jour:
En raison des deux excellentes réponses. Je sentais qu'il pourrait être utile une marque de banc
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)
Résultats:
8.74591397369441
9.647086477861325
ressemble à la compréhension de la liste a un bord.
C'est génial! Je savais qu'il devait y avoir un moyen! –