Saya memiliki kode berikut:
new_index = index + offset
if new_index < 0:
new_index = 0
if new_index >= len(mylist):
new_index = len(mylist) - 1
return mylist[new_index]
Pada dasarnya, saya menghitung indeks baru dan menggunakannya untuk menemukan beberapa elemen dari daftar. Untuk memastikan indeks berada di dalam batas-batas daftar, saya perlu menulis 2 if
pernyataan itu tersebar menjadi 4 baris. Itu cukup bertele-tele, agak jelek ... Berani saya katakan, ini sangat tidak pythonic .
Apakah ada solusi lain yang lebih sederhana dan lebih ringkas? (dan lebih banyak lagi pythonic )
Ya, saya tahu saya dapat menggunakan if else
dalam satu baris, tetapi tidak dapat dibaca:
new_index = 0 if new_index < 0 else len(mylist) - 1 if new_index >= len(mylist) else new_index
Saya juga tahu saya bisa merangkai max()
dan min()
bersama. Lebih ringkas, tapi saya rasa agak kabur, lebih sulit menemukan bug jika saya salah mengetik. Dengan kata lain, saya tidak menganggapnya sangat mudah.
new_index = max(0, min(new_index, len(mylist)-1))