Saya yakin ada cara sederhana untuk melakukan ini yang tidak terjadi pada saya.
Saya memanggil banyak metode yang mengembalikan daftar. Daftarnya mungkin kosong. Jika daftar ini tidak kosong, saya ingin mengembalikan item pertama; jika tidak, saya ingin mengembalikan None. Kode ini berfungsi:
my_list = get_list()
if len(my_list) > 0: return my_list[0]
return None
Tampaknya bagi saya harus ada idiom satu garis sederhana untuk melakukan ini, tetapi untuk kehidupan saya, saya tidak dapat memikirkannya. Disana?
Edit:
Alasan saya mencari ekspresi satu baris di sini bukan karena saya suka kode yang sangat singkat, tetapi karena saya harus menulis banyak kode seperti ini:
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
Apa yang ingin saya lakukan tentu saja dapat dicapai dengan suatu fungsi (dan mungkin akan):
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
Saya memposting pertanyaan karena saya sering terkejut dengan apa yang bisa dilakukan ekspresi sederhana dengan Python, dan saya pikir menulis fungsi adalah hal yang konyol untuk dilakukan jika ada ekspresi sederhana yang bisa melakukan trik. Tetapi melihat jawaban ini, sepertinya fungsi adalah solusi sederhana.
next(iter(your_list))
, karena jika Anda memberikan argumen kedua iter
, Anda mengatakan bahwa argumen pertama dapat dipanggil.
next(iter(your_list), None)
alih-alihfirst_item(your_list)
dengan asumsiyour_list
tidakNone
(get_first_list()
danget_second_list()
harus selalu mengembalikan iterable).