program story

슬라이스 표기법을 사용하여 목록 반전

inputbox 2020. 12. 15. 19:18
반응형

슬라이스 표기법을 사용하여 목록 반전


다음 예에서 :

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

반응형