슬라이스 표기법을 사용하여 목록 반전
다음 예에서 :
foo = ['red', 'white', 'blue', 1, 2, 3]
여기서 : foo[0:6:1]
foo의 모든 요소를 인쇄합니다. 그러나 foo[6:0:-1]
첫 번째 또는 0 번째 요소는 생략됩니다.
>>> foo[6:0:-1]
[3, 2, 1, 'blue', 'white']
foo.reverse () 또는 foo [::-1]을 사용하여 목록을 역으로 인쇄 할 수 있다는 것을 이해하지만 foo [6 : 0 : -1]이 전체 목록을 인쇄하지 않는 이유를 이해하려고합니다. ?
간단히 슬라이스 표기법 :
[ <first element to include> : <first element to exclude> : <step> ]
목록을 뒤집을 때 첫 번째 요소를 포함하려면 다음과 같이 중간 요소를 비워 둡니다.
foo[::-1]
일반적으로 Python 슬라이스에 대한 몇 가지 좋은 정보를 찾을 수 있습니다.
Python의 슬라이스 표기법 설명
슬라이스 표기법을 기억하는 데 문제가있는 경우 Hokey Cokey를 시도해 볼 수 있습니다 .
[ In : Out : 흔들어주세요 ]
[먼저 소자 에서 첫째 소자 떠날 clude 아웃 다음 단계 를 사용하는]
YMMV
... foo [6 : 0 : -1]이 전체 목록을 인쇄하지 않는 이유는 무엇입니까?
중간 값은 포함이 아닌 독점 중지 값이기 때문입니다. 간격 표기 [기동, 정지)된다.
이것이 바로 [x] range의 작동 방식입니다.
>>> range(6, 0, -1)
[6, 5, 4, 3, 2, 1]
그것들은 결과 목록에 포함되는 색인이며 첫 번째 항목에는 0이 포함되지 않습니다.
>>> range(6, -1, -1)
[6, 5, 4, 3, 2, 1, 0]
그것을 보는 또 다른 방법은 다음과 같습니다.
>>> L = ['red', 'white', 'blue', 1, 2, 3]
>>> L[0:6:1]
['red', 'white', 'blue', 1, 2, 3]
>>> len(L)
6
>>> L[5]
3
>>> L[6]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IndexError: list index out of range
인덱스 6은 L에 대한 유효한 인덱스를 넘어서 (정확히 한 과거), 범위에서 제외 된 중지 값으로 제외됩니다.
>>> range(0, 6, 1)
[0, 1, 2, 3, 4, 5]
여전히 목록의 각 항목에 대한 색인을 제공합니다.
이 답변은 약간 구식 일 수 있지만 같은 문제를 겪고있는 사람에게는 도움이 될 수 있습니다. 다음과 같이 두 번째 내부 슬라이스를 적용하여 인덱스가 0 인 임의의 끝을 가진 역방향 목록을 얻을 수 있습니다.
>>> L = list(range(10))
>>> L
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> (start_ex, end) = (7, 0)
>>> L[end:start_ex][::-1]
[6, 5, 4, 3, 2, 1, 0]
사용하다
>>>foo[::-1]
이것은 끝 요소에서 시작까지 목록의 역순을 표시합니다.
참조 URL : https://stackoverflow.com/questions/5876998/reversing-a-list-using-slice-notation
'program story' 카테고리의 다른 글
C #에서 두 배열 간의 "차이"를 얻습니까? (0) | 2020.12.15 |
---|---|
이 C # 프로그램에서 인쇄 할 열 이름을 어떻게 얻습니까? (0) | 2020.12.15 |
AVD 에뮬레이터에서 sdcard 폴더를 보는 방법은 무엇입니까? (0) | 2020.12.15 |
Javascript에서 입력 상자에 커서를 설정하는 방법은 무엇입니까? (0) | 2020.12.15 |
ImportError : psycopg2라는 모듈이 없습니다. (0) | 2020.12.15 |