다음 코드가 있습니다.
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]
기본적으로 새 인덱스를 계산하고이를 사용하여 목록에서 일부 요소를 찾습니다. 인덱스가 목록의 범위 내에 있는지 확인하기 위해 두 개의 if
문을 4 줄로 나누어 작성해야했습니다 . 그것은 아주 장황하고 약간 못 생겼습니다 ... 감히 말하지만, 그것은 아주 비단뱀 적 입니다.
더 간단하고 컴팩트 한 다른 솔루션이 있습니까? (그리고 더 pythonic )
예, if else
한 줄로 사용할 수 있지만 읽을 수 없습니다.
new_index = 0 if new_index < 0 else len(mylist) - 1 if new_index >= len(mylist) else new_index
나는 또한 체인을 할 수있는 알 max()
과 min()
함께. 더 콤팩트하지만 잘못 입력하면 버그를 찾기가 더 어렵고 모호하다고 느낍니다. 즉, 매우 간단하지 않습니다.
new_index = max(0, min(new_index, len(mylist)-1))