Eminim bunu yapmanın daha basit bir yolu var.
Bir liste döndüren bir sürü yöntem arıyorum. Liste boş olabilir. Liste boş değilse, ilk öğeyi döndürmek istiyorum; Aksi takdirde, Hiçbiri dönmek istiyorum. Bu kod çalışır:
my_list = get_list()
if len(my_list) > 0: return my_list[0]
return None
Bana öyle geliyor ki bunu yapmak için tek satırlık basit bir deyim olmalı, ama benim için bunu düşünemiyorum. Var mı?
Düzenle:
Burada tek satırlık bir ifade arıyorum nedeni ben inanılmaz derecede terse kodu gibi değil, ama böyle bir çok kod yazmak zorunda çünkü:
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
Ne yapmak istiyorum kesinlikle bir işlev ile başarılabilir (ve muhtemelen olacak):
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
Soruyu yayınladım çünkü Python'daki basit ifadelerin neler yapabileceğine sık sık şaşırdım ve basit bir ifade varsa hile yapabilen bir işlev yazmanın aptalca bir şey olduğunu düşündüm. Bir işlev gibi Ancak bu cevapları görünce, öyle görünüyor olduğunu basit bir çözüm.
next(iter(your_list))
, çünkü ikinci bir argüman iter
verirseniz, ona ilk argümanın çağrılabilir olduğunu söylüyorsunuz.
next(iter(your_list), None)
,first_item(your_list)
varsaymak yerine kullanabilirsiniz ( ve her zaman yinelenebilir bir değer döndürmesi gerekir).your_list
None
get_first_list()
get_second_list()