SORU
12 Aralık 2008, Cuma


Python ilk madde veya Yok dönmek deyim

Bana oluşmasını değil, bunu yapmanın daha basit bir yolu vardır eminim.

Bir liste döndüren yöntemler bir grup arıyorum. Liste boş olabilir. Eğer liste boş olmayan, ilk ürünü iade etmek istiyorum; aksi halde, Hiçbiri geri dönmek istiyorum. Bu kod çalışır:

my_list = get_list()
if len(my_list) > 0: return my_list[0]
return None

Bunun için tek satırlık basit bir deyim olmalı gibi geliyor bana, ama bana yaşam için bunu düşünemiyorum. Orada mı?

Düzenleme:

Tek satırlık bir ifade arıyorum sebebi inanılmaz kısa kod severim, ama bu gibi bir sürü kod yazmak zorunda olduğum için değil:

x = get_first_list()
if x:
    # do something with x[0]
    # inevitably forget the [0] part, and have a bug to fix
y = get_second_list()
if y:
    # do something with y[0]
    # inevitably forget the [0] part AGAIN, and have another bug to fix

Yapmak istediğim şey kesinlikle bir fonksiyonu (ve muhtemelen olacaktır) ile yapılabilir:

def first_item(list_or_none):
    if list_or_none: return list_or_none[0]

x = first_item(get_first_list())
if x:
    # do something with x
y = first_item(get_second_list())
if y:
    # do something with y

Yayınlanan soru çünkü ben sık sık sürpriz ne kadar basit ifadeler Python yapabilir, ve düşündüm, yazmanın bir işlevi aptalca bir şey yapacak olsaydı basit bir ifade olabilir hile. Ama bu cevapları görünce, bir işlev gibi görünüyorbasit çözüm.

CEVAP
12 Aralık 2008, Cuma


En iyi yolu bu

a = get_list()
return a[0] if a else None

Ayrıca tek satırda yapabilirsin, ama programcı okumak çok daha zor olurdu

return (get_list()[:1] or [None])[0]

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • audivila

    audivila

    5 HAZİRAN 2009
  • parlophone

    parlophone

    28 ŞUBAT 2006
  • thetrollska

    thetrollska

    2 EKİM 2009