Tôi có mã sau:
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]
Về cơ bản, tôi tính toán một chỉ mục mới và sử dụng chỉ mục đó để tìm một số phần tử từ danh sách. Để đảm bảo chỉ mục nằm trong giới hạn của danh sách, tôi cần viết 2 if
câu lệnh đó thành 4 dòng. Điều đó khá dài dòng, một chút xấu xí ... Tôi dám nói, nó khá là không quan trọng .
Có giải pháp nào khác đơn giản và gọn nhẹ hơn không? (và nhiều pythonic hơn )
Có, tôi biết tôi có thể sử dụng if else
trong một dòng, nhưng không thể đọc được:
new_index = 0 if new_index < 0 else len(mylist) - 1 if new_index >= len(mylist) else new_index
Tôi cũng biết tôi có thể xâu chuỗi max()
và min()
cùng nhau. Nó nhỏ gọn hơn, nhưng tôi cảm thấy nó hơi tối nghĩa, khó tìm lỗi hơn nếu tôi gõ sai. Nói cách khác, tôi thấy nó không đơn giản lắm.
new_index = max(0, min(new_index, len(mylist)-1))