SORU
3 Mart 2012, CUMARTESİ


Python: liste Bul

Bu keyifli rastlamak var:

item = someSortOfSelection()
if item in myList:
    doMySpecialFunction(item)

ama bazen eğer liste dize oluşan bir liste yaparken tanınan değillerse olarak tüm öğeleri ile çalışmaz.

en 'pythonic' listesinde bir öğe bulma yolu: 8**?

CEVAP
3 Mart 2012, CUMARTESİ


İlk sorunuza gelince: bu kod gayet iyi olduğunu ve eğer item myList içindeki unsurlardan biri eşitse çalışması gerekir. Belki bir dize bulmak için deneyintam olarakyanlışlık muzdarip olan öğelerden biri ya da belki bir kayan nokta değeri kullanarak maç.

İkinci sorunuza gelince: aslında hakkında çeşitli yönleri Var"": . bulma

Kontrol eğer içinde bir şey varsa

Bu tarif şöyledir: Bir şeyi bir liste ya da değil. içinde olup olmadığını Kontrol ediniz Bildiğiniz gibi, bunun için in operatörünü kullanabilirsiniz:

3 in [1, 2, 3] # => True

Bir toplama filtreleme

Yani, belirli bir koşula uyan bir sıradaki tüm öğeleri bulmak. Bu liste üreteci veya jeneratör ifadeleri kullanabilirsiniz:

matches = [x for x in lst if fulfills_some_condition(x)]
matches = (x for x in lst if x > 6)

İkinci bir dönüş olacakjeneratörbir tür "sadece sana yineleme. en kısa sürede inşa edilecek liste tembel olarak düşünebileceğiniz Bu arada, ilk olarak tam olarak eşdeğerdir

matches = filter(fulfills_some_condition, lst)

Python 2'de. Burada üst düzey iş görür ;) gördüğünüz Python 3 filter bir listesini döndürmek değil, ama bir jeneratör gibi nesne.

Bulma ilk geçtiği

Eğer tek istediğin ilk şey eşleşen bir durum (ama bilmiyorum ne olduğunu henüz), iyi kullanmak için döngü (muhtemelen kullanarak else fıkra olarak, hangi değil çok iyi bilinen). Ayrıca kullanabilirsiniz

next(x for x in lst if ...)

ilk maçı iade veya hiçbiri bulunursa StopIteration zam olacak. Alternatif olarak, kullanabilirsiniz

next((x for x in lst if ...), [default value])

Bir öğenin yerini bulmak

Listeler için de bazen bilmek istiyorsanız yararlı olabilir index yöntemi varneredebelirli bir öğe listesi

[1,2,3].index(2) # => 1
[1,2,3].index(4) # => ValueError

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006
  • Jason Rosolowski

    Jason Rosolo

    25 EKİM 2006
  • Nickcidious

    Nickcidious

    6 HAZİRAN 2011