python 에서 list 를 찾 는 다섯 가지 방법 에 대한 설명
다음은 alist=['a','b','c','hello']를 예 로 들 어 소개 합 니 다.
string 형식 은 find 방법 으로 문자열 의 위 치 를 찾 을 수 있 습 니 다:
a_list.find('a')
찾 으 면 첫 번 째 일치 하 는 위치 로 돌아 가 고,찾 지 못 하면-1 로 돌아 가 며,index 방법 으로 찾 으 면 찾 지 못 하면 오류 가 발생 합 니 다.
추가 지식:Python 에서 목록 요 소 를 포함 하 는 색인 을 찾 습 니 다.index 오류!!
목록["foo","bar","baz"]와 목록 에 있 는 항목"bar"에 대해 어떻게 Python 에서 색인(1)을 가 져 옵 니까?
인덱스
>>> ["foo", "bar", "baz"].index("bar")
경 고 는 다음 과 같다.
이것 은 아마도 이 문제 에 대답 하 는 가장 철저한 방법 일 것 입 니 다.index 는 상당히 약 한 구성 요소 listAPI 이 고,나 는 내 가 마지막 으로 그것 을 사용 한 분 노 를 기억 하지 못 합 니 다.댓 글 에서 이 답 이 많이 인용 되 었 기 때문에 더욱 완전 해 야 한다 고 지적 했다.list.index 에 따 른 경고 들처음에 문서 문자열 을 봐 야 할 수도 있 습 니 다:
>>> print(list.index.__doc__)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
제 가 사 용 했 던 대부분의 지역 index 는 현재 목록 유도 나 생 성기 표현 식 을 사용 하고 있 습 니 다.왜냐하면 이것 은 더욱 홍보 성 이 있 기 때 문 입 니 다.따라서 index 를 사용 하 는 것 을 고려 하고 있다 면 이 뛰어난 python 기능 을 보십시오.요소 가 목록 에 없 으 면 던 집 니 다.
항목 이 존재 하지 않 으 면 index 결과 ValueError 를 호출 합 니 다.
>>> [1, 1].index(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 2 is not in list
이 항목 이 목록 에 없 을 수도 있 습 니 다.우선 item in mylist(깨끗 하고 읽 을 수 있 는 방법)또는
index 호출 소 포 를 try/except 에서 캡 처 한 블록 에 ValueError(더 빠 를 수 있 습 니 다.적어도 검색 목록 이 길 때 이 항목 은 존재 합 니 다.)
2.enumerate()
대부분의 답 은 하나의 색인 을 찾 는 방법 을 설명 하지만 항목 이 목록 에 여러 번 있 으 면 여러 개의 색인 을 되 돌려 주지 않 습 니 다.용도enumerate():
for i, j in enumerate(['foo', 'bar', 'baz']):
if j == 'bar':
print(i)
이 index()함 수 는 첫 번 째 일치 항목 만 되 돌려 주 고 enumerate()는 모든 일치 항목 을 되 돌려 줍 니 다.목록 으로 이해:
[i for i, j in enumerate(['foo', 'bar', 'baz']) if j == 'bar']
여기에 또 다른 작은 해결 방안itertools.count()이 있다.
from itertools import izip as zip, count # izip for maximum efficiency
[i for i, j in zip(count(), ['foo', 'bar', 'baz']) if j == 'bar']
큰 목록 에 대해 서 는 사용 보다 enumerate()가 더 효과 적 입 니 다.
$ python -m timeit -s "from itertools import izip as zip, count" "[i for i, j in zip(count(), ['foo', 'bar', 'baz']*500) if j == 'bar']"
10000 loops, best of 3: 174 usec per loop
$ python -m timeit "[i for i, j in enumerate(['foo', 'bar', 'baz']*500) if j == 'bar']"
10000 loops, best of 3: 196 usec per loop
3.NumPy모든 색인 을 원한 다 면 NumPy 를 사용 할 수 있 습 니 다.
import numpy as np
array = [1, 2, 1, 3, 4, 5, 1]
item = 1
np_array = np.array(array)
item_index = np.where(np_array==item)
print item_index
# Out: (array([0, 2, 6], dtype=int64),)
그것 은 명확 하고 읽 기 쉬 운 해결 방안 이다.zip
이zip기능 을 가 진 모든 색인:
get_indexes = lambda x, xs: [i for (y, i) in zip(xs, range(len(xs))) if x == y]
print get_indexes(2, [1, 2, 3, 4, 5, 6, 3, 2, 3, 2])
print get_indexes('f', 'xsfhhttytffsafweef')
이상 python 에서 list 에 대한 다섯 가지 검색 방법 에 대한 설명 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
로마 숫자를 정수로 또는 그 반대로 변환그 중 하나는 로마 숫자를 정수로 변환하는 함수를 만드는 것이었고 두 번째는 그 반대를 수행하는 함수를 만드는 것이었습니다. 문자만 포함합니다'I', 'V', 'X', 'L', 'C', 'D', 'M' ; 문자열이 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.