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

  • Droid Life

    Droid Life

    17 Kasım 2009
  • UKF Dubstep

    UKF Dubstep

    29 NİSAN 2009
  • wwjoshdew

    wwjoshdew

    1 AĞUSTOS 2007