etc./StackOverFlow

목록의 마지막 요소를 얻는 방법은 무엇입니까?

청렴결백한 만능 재주꾼 2021. 11. 23. 03:44
반응형

질문자 :Janusz


Python에서 목록의 마지막 요소를 어떻게 얻습니까?



some_list[-1] 는 가장 짧고 가장 Pythonic입니다.

실제로 이 구문으로 훨씬 더 많은 작업을 수행할 수 있습니다. some_list[-n] 구문은 n번째에서 마지막 요소를 가져옵니다. 따라서 some_list[-1] 은 마지막 요소를 가져오고, some_list[-2] 는 마지막 요소에서 두 번째 요소를 가져오는 등 첫 번째 요소를 제공 some_list[-len(some_list)]

이 방법으로 목록 요소를 설정할 수도 있습니다. 예를 들어:

 >>> some_list = [1, 2, 3] >>> some_list[-1] = 5 # Set the last element >>> some_list[-2] = 3 # Set the second to last element >>> some_list [1, 3, 5]

인덱스로 목록 항목을 가져오면 예상 항목이 존재하지 않는 경우 IndexError some_list[-1] some_list 가 비어 있으면 예외를 발생시킨다는 것을 의미합니다. 빈 목록은 마지막 요소를 가질 수 없기 때문입니다.


Sasha Chedygov

str() 또는 list() astr = '' 또는 alist = [] 와 같이 비어 있게 되면 객체 "에 대해 alist[-1] 대신 alist[-1:] 를 사용할 수 있습니다. 동일성".

이것의 중요성은 다음과 같습니다.

 alist = [] alist[-1] # will generate an IndexError exception whereas alist[-1:] # will return an empty list astr = '' astr[-1] # will generate an IndexError exception whereas astr[-1:] # will return an empty str

구별되는 점은 빈 목록 객체나 빈 str 객체를 반환하는 것이 예외 객체보다 "마지막 요소"와 비슷하다는 것입니다.


DevPlayer

다음을 수행할 수도 있습니다.

 last_elem = alist.pop()

pop() 메서드가 마지막 요소를 삭제하기 때문에 목록으로 수행하려는 작업에 따라 다릅니다.


Taurus Olson

파이썬에서 마지막 요소를 표시하는 가장 간단한 방법은

 >>> list[-1:] # returns indexed value [3] >>> list[-1] # returns value 3

그러한 목표를 달성하기 위한 다른 많은 방법이 있지만 이것들은 사용하기에 짧고 달콤합니다.


Atul Arvind

Python에서 목록의 마지막 요소를 어떻게 얻습니까?

마지막 요소를 얻으려면

  • 목록을 수정하지 않고
  • 목록에 마지막 요소가 있다는 것을 알고 있다고 가정합니다(즉, 비어 있지 않음).

아래 첨자 표기법에 -1 을 전달합니다.

 >>> a_list = ['zero', 'one', 'two', 'three'] >>> a_list[-1] 'three'

설명

인덱스와 슬라이스는 음의 정수를 인수로 사용할 수 있습니다.

각 인덱스가 시퀀스의 어떤 항목을 참조하는지 나타내기 위해 설명서 의 예제 "Python" 에서 -1 은 마지막 요소인 'n' 문자를 참조합니다.

 +---+---+---+---+---+---+ | P | y | t | h | o | n | +---+---+---+---+---+---+ 0 1 2 3 4 5 -6 -5 -4 -3 -2 -1 >>> p = 'Python' >>> p[-1] 'n'

반복 가능한 언패킹을 통한 할당

이 메서드는 마지막 요소를 가져올 목적으로 두 번째 목록을 불필요하게 구체화할 수 있지만 완전성을 위해(목록뿐만 아니라 모든 반복 가능한 항목을 지원하기 때문에):

 >>> *head, last = a_list >>> last 'three'

변수 이름 head는 새로 생성된 불필요한 목록에 바인딩됩니다.

 >>> head ['zero', 'one', 'two']

그 목록으로 아무 것도 하지 않으려면 다음이 더 적절할 것입니다.

 *_, last = a_list

또는 실제로 목록이라는 것을 알고 있다면(또는 최소한 아래 첨자 표기법을 허용합니다):

 last = a_list[-1]

함수에서

한 댓글 작성자는 다음과 같이 말했습니다.

Python에 Lisp처럼 first() 및 last()에 대한 함수가 있으면 좋겠는데... 불필요한 람다 함수를 많이 제거할 것입니다.

이들은 매우 간단하게 정의할 수 있습니다.

 def last(a_list): return a_list[-1] def first(a_list): return a_list[0]

operator.itemgetter 사용하십시오.

 >>> import operator >>> last = operator.itemgetter(-1) >>> first = operator.itemgetter(0)

두 경우 모두:

 >>> last(a_list) 'three' >>> first(a_list) 'zero'

특수한 상황들

더 복잡한 작업을 수행하는 경우 약간 다른 방식으로 마지막 요소를 가져오는 것이 더 효과적일 수 있습니다.

프로그래밍이 처음이라면 이 섹션을 피해야 합니다. 그렇지 않으면 알고리즘의 다른 부분을 함께 결합하기 때문입니다. 한 곳에서 알고리즘을 변경하면 다른 코드 라인에 의도하지 않은 영향을 미칠 수 있습니다.

나는 가능한 한 완전하게 주의 사항과 조건을 제공하려고 노력하지만, 내가 놓친 것이 있을 수 있습니다. 내가 경고를 남기고 있다고 생각되면 의견을 말하십시오.

슬라이싱

목록의 조각은 새 목록을 반환합니다. 따라서 새 목록의 요소를 원할 경우 -1에서 끝까지 조각할 수 있습니다.

 >>> a_slice = a_list[-1:] >>> a_slice ['three']

목록이 비어 있어도 실패하지 않는다는 장점이 있습니다.

 >>> empty_list = [] >>> tail = empty_list[-1:] >>> if tail: ... do_something(tail)

인덱스로 액세스하려고 하면 처리해야 IndexError

 >>> empty_list[-1] Traceback (most recent call last): File "<stdin>", line 1, in <module> IndexError: list index out of range

그러나 이 목적을 위한 슬라이싱은 다음이 필요한 경우에만 수행해야 합니다.

  • 새 목록이 생성됨
  • 이전 목록이 비어 있으면 새 목록이 비어 있습니다.

루프를 for

for 루프에는 내부 범위가 없습니다.

이미 목록에 대해 완전한 반복을 수행하고 있다면 루프에서 할당된 변수 이름이 마지막 요소를 계속 참조합니다.

 >>> def do_something(arg): pass >>> for item in a_list: ... do_something(item) ... >>> item 'three'

이것은 의미상 목록의 마지막 항목이 아닙니다. 이것은 의미상으로 item 이름이 바인딩된 마지막 것입니다.

 >>> def do_something(arg): raise Exception >>> for item in a_list: ... do_something(item) ... Traceback (most recent call last): File "<stdin>", line 2, in <module> File "<stdin>", line 1, in do_something Exception >>> item 'zero'

따라서 이것은 다음 경우에만 마지막 요소를 얻는 데 사용해야 합니다.

  • 이미 반복되고 있으며
  • 루프가 완료될 것임을 알고 있습니다(오류로 인해 중단되거나 종료되지 않음). 그렇지 않으면 루프에서 참조하는 마지막 요소를 가리킬 것입니다.

가져오기 및 제거

마지막 요소를 제거하고 반환하여 원래 목록을 변경할 수도 있습니다.

 >>> a_list.pop(-1) 'three' >>> a_list ['zero', 'one', 'two']

그러나 이제 원래 목록이 수정되었습니다.

( -1 은 실제로 기본 인수이므로 list.pop 사용할 수 있음):

 >>> a_list.pop() 'two'

이 경우에만 수행

  • 목록에 요소가 있다는 것을 알고 있거나 비어 있는 경우 예외를 처리할 준비가 되어 있고
  • 목록에서 마지막 요소를 제거하여 스택처럼 처리하려고 합니다.

이것들은 유효한 사용 사례이지만 그다지 일반적이지 않습니다.

나중을 위해 나머지 반전 저장:

왜 그렇게 하는지 모르겠지만 완전성을 위해 reversed반복자 (반복자 프로토콜 지원)를 next 전달할 수 있습니다.

 >>> next(reversed([1,2,3])) 3

따라서 이것을 반대로 하는 것과 같습니다.

 >>> next(iter([1,2,3])) 1

그러나 나중에 역방향 반복자의 나머지 부분이 필요하지 않는 한 이렇게 해야 할 좋은 이유가 생각나지 않습니다. 아마도 다음과 같을 것입니다.

 reverse_iterator = reversed([1,2,3]) last_element = next(reverse_iterator) use_later = list(reverse_iterator)

그리고 지금:

 >>> use_later [2, 1] >>> last_element 3

Aaron Hall

IndexError: list index out of range 를 방지하려면 다음 구문을 사용하십시오.

 mylist = [1, 2, 3, 4] # With None as default value: value = mylist and mylist[-1] # With specified default value (option 1): value = mylist and mylist[-1] or 'default' # With specified default value (option 2): value = mylist[-1] if mylist else 'default'

Valentin Podkamennyi

lst[-1] 이 가장 좋은 방법이지만 일반적인 iterable에서는 more_itertools.last 고려하십시오.

암호

 import more_itertools as mit mit.last([0, 1, 2, 3]) # 3 mit.last(iter([1, 2, 3])) # 3 mit.last([], "some default") # 'some default'

pylang

다른 방법:

 some_list.reverse() some_list[0]

Sanjay Pradeep

list[-1] 은 목록을 변경하지 않고 목록의 마지막 요소를 검색합니다. list.pop() 은 목록의 마지막 요소를 검색하지만 원래 목록을 변경/변경합니다. 일반적으로 원래 목록을 변경하는 것은 권장되지 않습니다.

또는 어떤 이유로 덜 파이썬적인 것을 찾고 있다면 목록이 비어 있지 않다고 가정하고 list list[len(list)-1]


Sondering Narcissist

목록이 비어 있을 때 IndexError가 발생하지 않도록 하려면 아래 코드를 사용할 수도 있습니다.

 next(reversed(some_list), None)

Yavuz Mester

좋아, 하지만 거의 모든 언어 방식의 공통 항목은 어떻습니까? items[len(items) - 1] 이것은 파이썬 지식이 필요하지 않기 때문에 마지막 요소를 얻는 가장 쉬운 방법입니다.


Radek Anuszewski

파이썬 방식

그래서 우리가 목록 a = [1,2,3,4] 가지고 있다고 생각해 봅시다. 파이썬에서 목록은 우리에게 그것의 일부나 요소를 주기 위해 조작될 수 있습니다. 다음 명령을 사용하면 마지막 요소를 쉽게 얻을 수 있습니다.

 print(a[-1])

Muneeb Ahmad Khurram

다음은 귀하의 쿼리에 대한 솔루션입니다.

 a=["first","second from last","last"] # A sample list print(a[0]) #prints the first item in the list because the index of the list always starts from 0. print(a[-1]) #prints the last item in the list. print(a[-2]) #prints the last second item in the list.

산출:

 >>> first >>> last >>> second from last

Code Carbonate

"IndexError: list index out of range"를 방지하기 위해 이 코드를 사용할 수 있습니다.

 list_values = [12, 112, 443] def getLastElement(lst): if len(lst) == 0: return 0 else: return lst[-1] print(getLastElement(list_values))

HASAN HÜSEYİN YÜCEL

당신은 단지 [-1] 인덱스를 가져와야 할 것입니다. 예를 들어:

 list=[0,1,2] last_index=list[-1] print(last_index)

출력으로 2를 얻습니다.


AI Nerd

Python의 목록에서 마지막 요소에 액세스:

1: 음수 인덱싱 -1로 마지막 요소에 액세스

 >> data = ['s','t','a','c','k','o','v','e','r','f','l','o','w'] >> data[-1] 'w'

2. pop() 메소드로 마지막 요소에 접근

 >> data = ['s','t','a','c','k','o','v','e','r','f','l','o','w'] >> data.pop() 'w'

그러나 pop 메서드는 목록에서 마지막 요소를 제거합니다.


Gunjan

my_list[-1] 를 수행하면 목록의 마지막 요소가 반환됩니다. 음수 시퀀스 인덱스는 배열 끝의 위치를 나타냅니다. 음수 인덱싱은 끝에서 시작하는 것을 의미하고, -1은 마지막 항목을 나타내고, -2는 마지막에서 두 번째 항목을 나타내는 식입니다.


Hadi Mir

이것을 언급하는 답변을 찾을 수 없습니다. 그래서 추가.

some_list[~0] 도 시도해 볼 수 있습니다.

그것이 물결 기호입니다.


Underoos

next 과 함께 사용할 수 있고 [::-1] 과 함께 iter 할 수 있습니다.

 >>> a = [1, 2, 3] >>> next(iter(a[::-1])) 3 >>>

U12-Forward

출처 : http:www.stackoverflow.com/questions/930397/how-to-get-the-last-element-of-a-list

반응형