python 에서 list 를 찾 는 다섯 가지 방법 에 대한 설명

4208 단어 pythonlist찾다
Python 에 서 는 검색 기능 이 있 습 니 다.다섯 가지 방식:in,not in,count,index,find 앞의 두 가지 방법 은 글 자 를 보존 하 는 것 이 고,뒤의 두 가지 방식 은 목록 의 방법 입 니 다.
다음은 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 에 대한 다섯 가지 검색 방법 에 대한 설명 은 바로 편집장 이 여러분 에 게 공유 한 모든 내용 입 니 다.여러분 께 참고 가 되 고 저희 도 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기