2010-01-14 18 views

Odpowiedz

11

Zdecydowanie przypadku wyrażeń listowych:

m = [row for row in l if 'a' in row[0]] 

Oto biorę swój „o«a»w pierwszy element” Dosłownie, skąd użycia operatora in. Jeśli chcesz ograniczyć to „mającego«a»jako pierwszego elementu” (coś zupełnie odmiennego od tego, co faktycznie napisał -!), A następnie

m = [row for row in l if 'a' == row[0]] 

jest bardziej podoba ;-).

0

Z filter funkcję:

m = filter(lambda x: x[0] == 'a', l) 

lub jako listowego:

m = [x for x in l where x[0] == 'a'] 
0

Co jest złego tylko:

m = [i for i in l if i[0] == 'a'] 

Lub:

m = filter(lambda x: x[0] == 'a', l) 

Wątpię, aby różnica między nimi była znacząca pod względem wydajności. Użyj tego, który jest najwygodniejszy. Nie podoba mi się lambda s, ale filter można zastąpić itertools.ifilter dla większych list, jeśli jest to problem, ale możesz również zmienić zrozumienie listy na generator (zmień [] na ()), aby osiągnąć ten sam ogólny wynik. Poza tym są prawdopodobnie identyczne.

Powiązane problemy