2010-07-19 31 views
11

Sıralanmamış sayıların bir listesi verildiğinde, N'den küçük olan en küçük sayıyı (varsa) bulmak istiyorum.python - liste işlemleri

C#

, ben bu (ihmal çekler) Böyle bir şey yapmak istiyorum:

Python bunu yapmanın kısa, okunabilir yolu nedir
var x = list.Where(i => i > N).Min(); 

?

+1

Ne demek * "READABLE" ile kastediyorsunuz? –

+0

@SLott "read · a · ble/ˈrēdəbəl /: (2) Okuması kolay veya zevkli." Ne demek "Okumaktan neyi kastediyorsunuz?" ? –

cevap

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

küçük harf ell değişken adı için iyi bir seçim değil –

+0

@Marius: Aslında bunun için beni reddettiniz mi? – SilentGhost

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

diğer kişiler listesi anlama cevapları verdik. Alternatif olarak filter bir listenin elemanlarını 'filtrelemek' için kullanışlıdır.

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

filtresini kullanarak, jeneratör ifadeleri kullanmanın biraz daha yavaş olduğunu. Bu soruyu kısmen Python becerilerimi geliştirmek için sordum, bu yüzden bu cevap amacım oldukça iyi. –

+0

+1, –