Python에서 목록의 마지막 요소를 어떻게 얻습니까?
질문자 :Janusz
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
'etc. > StackOverFlow' 카테고리의 다른 글
JavaScript에서 십진수 유효성 검사 - IsNumeric() (0) | 2021.11.23 |
---|---|
CSS로 텍스트를 세로로 가운데에 맞추려면 어떻게 합니까? [복제하다] (0) | 2021.11.23 |
npm 설치를 위한 --save 옵션은 무엇입니까? (0) | 2021.11.23 |
문자열을 날짜 시간으로 변환 (0) | 2021.11.23 |
jQuery를 사용하여 드롭다운 목록(선택 상자)에서 선택한 텍스트 가져오기 (0) | 2021.11.23 |