2010-07-19 24 views
11

Biorąc pod uwagę listę nieposortowanych liczb, chcę znaleźć najmniejszą liczbę większą niż N (jeśli istnieje).python - operacje na listach

W języku C#, chciałbym zrobić coś takiego (kontrole pominięta):

var x = list.Where(i => i > N).Min(); 

Co to krótki, czytelny sposób to zrobić w Pythonie?

+1

Co oznacza * ty * przez "READABLE"? –

+0

@SLott "przeczytaj · a · ble/rēdəbəl /: (2) Łatwy lub przyjemny do czytania." Co masz na myśli przez "Co masz na myśli przez czytelne?" ? –

Odpowiedz

19
>>> l = [4, 5, 12, 0, 3, 7] 
>>> min(x for x in l if x > 5) 
7 
+0

Małe litery nie są dobrym wyborem dla nazwy zmiennej –

+0

@Marius: czy mnie za to pochlebiłeś? – SilentGhost

2
x = min(i for i in mylist if i > N) 
4
min(x for x in mylist if x > N) 
3

Inne osoby dały odpowiedź lista ze zrozumieniem. Alternatywnie, filter jest przydatne do "filtrowania" elementów listy.

min(filter(lambda t: t > N, mylist)) 
+1

użycie filtra jest nieco wolniejsze niż użycie wyrażeń generatora –

+0

+1. Zadałem to pytanie częściowo, aby poprawić moje umiejętności w Pythonie, więc ta odpowiedź całkiem dobrze służy mojemu celowi. –

Powiązane problemy