목록에 대해서는 ' [";;;; bar" foo" " " baz"]' 와 ',' 목록에 항목을 " bar", 해당 인덱스 (1) 의 파이썬, 어떻게 해야 합니까?
>>> ["foo", "bar", "baz"].index("bar")
1
참조: [데이터 구조를 >. 자세한 내용은 열거합니다] (http://docs.python.org/2/tutorial/datastructures.html # 자세한 내용은 열거합니다)
단, 이는 아마 그 동안 깨끗한 방법을 묻는 질문에 대답 , 으로 '은' 목록 '대신' 인덱스화할 envision 있겠느뇨 apiu can& # 39, t, 쉐퍼드도 너희에게베풀어진 제가 마지막으로 사용된 그 정도다. 이 때문에 그동안 abc. 아웃하려면 it& # 39 의 내 의견이 크게 referenced 더욱 완벽한 답이 얻게된다면 이뤄져야 한다. 몇 가지 주의 사항 '대한' 리스트롬이네스 따라와야지! 그것은 아마도 처음에는 닥슬링 보면 그 가치가 있다.
>>> print(list.index.__doc__)
L.index(value, [start, [stop]]) -> integer -- return first index of value.
Raises ValueError if the value is not present.
'인덱스' 는 모든 요소가 있는 호출하십시오 목록의 순서대로 발견할 때까지 a 매치. # 39, 긴 목록은 don& 모르는 경우, 당신은 이 검색 목록에서 이 병목 현상이 발생할 수 있는 대략 될 수 있다. 이 경우, 다른 데이터 구조를 고려해야 합니다. 참고로 알고 있다면 일치시킵니다 힌트를 찾을 수 있는 '약' 인덱스화할 지정할 수 있습니다. 예를 들어, '이 스니핏을 라자이네스 (, 999_990 999_999 1_000_000)' 가 큰 직선입니다 라자이네스 (999_999) ',' 보다 대략 5 명령이라구요 전 대뿐입니다 10 만, 후자는 검색 항목을 검색할 수 있기 때문이다.
>>> import timeit
>>> timeit.timeit('l.index(999_999)', setup='l = list(range(0, 1_000_000))', number=1000)
9.356267921015387
>>> timeit.timeit('l.index(999_999, 999_990, 1_000_000)', setup='l = list(range(0, 1_000_000))', number=1000)
0.0004404920036904514
전화를 통해 '검색' 인덱스화할 목록에 일치하는 경우, 그리고 정지점으로 할 수 있을 때까지 주문하십시오 aspt there. 지수, 더 많은 일치시킵니다 콩지름에 바뀌엇어요 번역 또는 발생기입니다 표현식입니다.
>>> [1, 1].index(1)
0
>>> [i for i, e in enumerate([1, 2, 1]) if e == 1]
[0, 2]
>>> g = (i for i, e in enumerate([1, 2, 1]) if e == 1)
>>> next(g)
0
>>> next(g)
2
내가 한 번 사용한 ',' 내가 지금 대부분의 위치에서 아니하였으매 인덱스화할 사용하여 표현할 수 있기 때문에, 또는 발생기입니다 표현식에서는 바뀌엇어요 they& # 39 더 일반화 나온다. 만일 you& # 39 에 이르는 점을 감안하면, 이러한 뛰어난 살펴보기 위한 ',' re 인덱스화할 파이썬 피쳐들입니다.
'인덱스' 결과 '에 대한 호출을 바루어로 item& # 39 의 경우' 없습니다.
>>> [1, 1].index(2)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: 2 is not in list
없을 경우 지정값이 목록의 항목 중 하나를 합니다
정말 도움됐네 파이썬 함수를 사용할 수 있는 한 심아이엔큐 com/go/learn_fl_cs4_learningas2_kr 대화형 도움말에서는.
>>> help(["foo", "bar", "baz"])
Help on list object:
class list(object)
...
|
| index(...)
| L.index(value, [start, [stop]]) -> integer -- return first index of value
|
이를 위해 종종 무리는너희들이 방법을 찾고 있다.
그러나 그들의 대부분은 설명하란말야 어떻게 답을 찾기 위해 여러 방법을 단일 인덱스화할 인덱스화합니다 목록에 항목이 여러 번 반환하지 않습니다. ['열거하십시오 ()'] 사용하여 (https://docs.python.org/3.6/library/functions.html # 열거하십시오):
for i, j in enumerate(['foo', 'bar', 'baz']):
if j == 'bar':
print(i)
'인덱스 ()' 이 처음 나타나는 반면, ' ()' 항목을 모두 되돌려줍니다 기능만 되돌려줍니다 열거하십시오.
목록으로 것이다.
[i for i, j in enumerate(['foo', 'bar', 'baz']) if j == 'bar']
from itertools import izip as zip, count # izip for maximum efficiency
[i for i, j in zip(count(), ['foo', 'bar', 'baz']) if j == 'bar']
':' () 이 더 효율적으로 사용하는 것보다 더 큰 열거합니다 열거합니다.
$ 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
'인덱스 ()' 첫 되돌려줍니다 색인입니다 가치! >. 인덱스 (.) >. L. 인덱스화할 (가치, [시작, [정지점을]]) - >. 정수 값을 먼저 반품하십시오 색인입니다 -
def all_indices(value, qlist):
indices = []
idx = -1
while True:
try:
idx = qlist.index(value, idx+1)
indices.append(idx)
except ValueError:
break
return indices
all_indices("foo", ["foo","bar","baz","foo"])
문제가 발생할 경우 요소점 목록에 없는 것이다. 이 함수는 이 문제를 다룬다.
# if element is found it returns index of element else returns None
def find_element_in_list(element, list_element):
try:
index_element = list_element.index(element)
return index_element
except ValueError:
return None
하지만 이 모든 것을 재현하는 비헤이비어를 고유의 언어 기능을 잘 what& # 39, 상황을 잘.
[i for i in range(len(mylist)) if mylist[i]==myterm] # get the indices
[each for each in mylist if each==myterm] # get the items
mylist.index(myterm) if myterm in mylist else None # get the first index and fail quietly
왜 예외 처리 함수를 작성할 경우 언어 자체를 할 수 있는 방법을 통해 그리웠댔지?
>. 목록에 대해서는 ' [";;;; bar" foo" " " baz"]' 와 ',' 목록에 항목을 ", 이 방법은 깨끗한 bar" what& # 39 의 해당 인덱스 (1) 의 파이썬?
뭐, 물론 there& # 39 의 인덱스 메서드는 되돌려줍니다 색인입니다 처음에는:
>>> l = ["foo", "bar", "baz"]
>>> l.index('bar')
1
몇 가지 문제가 이 방법:
값이 누각되었습니다 바루어로 '강한' 할 수 있다.
이 같은 재사용 가능한 정의마다 함께 할 수 있습니다.
def index(a_list, value):
try:
return a_list.index(value)
except ValueError:
return None
그리고 이를 사용하여 다음과 같습니다.
>>> print(index(l, 'quux'))
None
>>> print(index(l, 'bar'))
1
그리고 이것은 경우 값을 가질 수 있는 문제 가능성이 높다 '는' 없음 '또는' 확인할지 반환되었습니다 아니다.
result = index(a_list, value)
if result is not None:
do_something(result)
, # 39 번, you& 외상때문에 경우 더 많은 정보를 얻을 수 있는 것은 'll 완료하십시오 리스트롬이네스':
>>> l.append('bar')
>>> l
['foo', 'bar', 'baz', 'bar']
>>> l.index('bar') # nothing at index 3?
1
로 표현할 수 있는 이 열거하십시오 바뀌엇어요 indexe:
>>> [index for index, v in enumerate(l) if v == 'bar']
[1, 3]
>>> [index for index, v in enumerate(l) if v == 'boink']
[]
없으면 그 결과의 발생을 통해 확인할 수 있습니다 확인란 부울을 가공할지 아무 일도 하지 않을 경우 다음과 같은 결과를 통해 루프
indexes = [index for index, v in enumerate(l) if v == 'boink']
for index in indexes:
do_something(index)
이 정보를 얻을 수 있는 경우, 당신은 시리즈를 내놓아 객체에는 판다.
>>> import pandas as pd
>>> series = pd.Series(l)
>>> series
0 foo
1 bar
2 baz
3 bar
dtype: object
비교 확인란 반환되므로 일련의 불 (bool) 값들:
>>> series == 'bar'
0 False
1 True
2 False
3 True
dtype: bool
이 시리즈를 통해 전달하고 불 (bool) 값들 아래 첨자 표기법 및 확보하십시오 그냥 시리즈 일치하는 구성원:
>>> series[series == 'bar']
1 bar
3 bar
dtype: object
단순히 인덱스, 인덱스화할 되돌려줍니다 스케쳐내 속성용 일련의 정수.
>>> series[series == 'bar'].index
Int64Index([1, 3], dtype='int64')
그리고 그, 그냥 지나칠 수 있는 스케쳐내 목록이거나 튜플 이를 구성자를:
>>> list(series[series == 'bar'].index)
[1, 3]
예, 바뀌엇어요 표현할 수 있지만, 함께 사용할 수 있습니다 # 39 의 그냥 너무 열거하십시오 that& 아니라 세련된 내 의견으로는 you& 대한 테스트를 하고, re - # 39 에서 작성한 코드를 C 파이썬 대신 평등이 감당할 수 있도록 기본 제공:
>>> [i for i, value in enumerate(l) if value == 'bar']
[1, 3]
>. Xy 묻는 문제가 아닌 실제 문제에 대한 해결 했습니다.
Do you think you 할 때 왜 인덱스화할 요소에 바뀌엇어요?
이미 알고 있는 경우, 왜 신경습니까 목록에 가치를 어디에?
어쨌든 그래서 I& # 39 위에 반복 # 39 m, 일반적으로 i& 목록, ll 일반적으로 렉시한테서 포인터입니다 재밌는 정보를 가져오는 인덱스화할 함께 열거하십시오.
내가 필요로 하는 ',' 리스트롬이네스 재호출 있어요. 그러나 나는, 내가 보고 생각하고 파이썬 표준 라이브러리를 통해 일부 뛰어난 사용할 수 있습니다.
이에 대한 여러 가지 많은 /dev/raw/raw1 이들리브 ',' GUI 및 텍스트 구문 분석.
이를 이용하여 찾을 수 있는 '키워드' 모듈에서는 셀명 표시자는 모듈에서는 목록을 통해 자동으로 재생성합니다 여러_키워드 항목이없습니다 메타프로그래밍.
마치 순서화된 매핑에서는 Lib/mailbox.py 사용할 수 있는 것으로 보인다.
key_list[key_list.index(old)] = new
및
del key_list[key_list.index(key)]
다음 달 수 있는 Lib/http/cookiejar.py 사용될 것으로 보인다.
mon = MONTHS_LOWER.index(mon.lower())+1
비슷한 Lib/tarfile.py 디스튜티우스 얻을 수 있는 최대 슬라이스에 항목:
members = members[:members.index(tarinfo)]
의 Lib/pickletools.py:
numtopop = before.index(markobject)
이러한 것은 마치 어떤 용도를 가진 공통점이란거지 작업할 수 없는 것 같아 제한적인 열거합니다 크기 ('O (n) 의 중요한 이유는 리스트롬이네스 조회 시간에 대해') 및 they& # 39, re 구문 분석 (및 UI 의 경우 유휴) 에서 주로 사용된다.
이를 위해 사용 가지가 있을 수 있지만, 이들은 상당히 아니었다. 답을 찾을 수 있다면, 이 경우, 어떤 일을 찾고 교도관님도요 하나님께용서를 교도관님도요 you& # 39 는 re 가장 직접적인 제공하는 툴을 사용 언어 단축시킵니다 활용.
모든 indexe 를 ['zip'] [1] 기능:
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')
첫 번째 요소 (n) 를 저장할 수 있는 열거하십시오 (alist 를) 는 색인입니다 때 is equal to look for x 너희는너희가 요소 목록.
>>> alist = ['foo', 'spam', 'egg', 'foo']
>>> foo_indexes = [n for n,x in enumerate(alist) if x=='foo']
>>> foo_indexes
[0, 3]
>>>
이 함수의 인수로 는 항목 및 목록 및 반품하십시오 목록에서 전에 같은 항목의 포지셔닝하십시오 보았습니다.
def indexlist(item2find, list_or_string):
"Returns all indexes of an item in a list or a string"
return [n for n,item in enumerate(list_or_string) if item==item2find]
print(indexlist("1", "010101010"))
[1, 3, 5, 7]
< h2> Simple< /h2>;;;
for n, i in enumerate([1, 2, 3, 4, 1]):
if i == 1:
print(n)
출력:
0
4
h1> 불신함은 <, 지금은 완전히 다른 일을. < /h1>; . 전에 같은 존재를 확증하 품목으로부터 가져오는 색인입니다. 이 방식은 지수 함수에 대해서 항상 착한 사람이 있어도 - 목록을 되돌려줍니다 빈 목록. 작동하잖아 문장열 함께 잘 알려져 있다.
def indices(l, val):
"""Always returns a list containing the indices of val in the_list"""
retval = []
last = 0
while val in l[last:]:
i = l[last:].index(val)
retval.append(last + i)
last += i + 1
return retval
l = ['bar','foo','bar','baz','bar','bar']
q = 'bar'
print indices(l,q)
print indices(l,'bat')
print indices('abcdaababb','a')
붙여넣어집니다 때 상호대화식 파이썬 창:
Python 2.7.6 (v2.7.6:3a1db0d2747e, Nov 10 2013, 00:42:54)
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def indices(the_list, val):
... """Always returns a list containing the indices of val in the_list"""
... retval = []
... last = 0
... while val in the_list[last:]:
... i = the_list[last:].index(val)
... retval.append(last + i)
... last += i + 1
... return retval
...
>>> l = ['bar','foo','bar','baz','bar','bar']
>>> q = 'bar'
>>> print indices(l,q)
[0, 2, 4, 5]
>>> print indices(l,'bat')
[]
>>> print indices('abcdaababb','a')
[0, 4, 5, 7]
>>>
이 같은 일이.
def indices(l, val):
"""Always returns a list containing the indices of val in the_list"""
return [index for index, value in enumerate(l) if value == val]
l = ['bar','foo','bar','baz','bar','bar']
q = 'bar'
print indices(l,q)
print indices(l,'bat')
print indices('abcdaababb','a')
이 때, 붙여넣어집니다 상호대화식 파이썬 창 익올때:
Python 2.7.14 |Anaconda, Inc.| (default, Dec 7 2017, 11:07:58)
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> def indices(l, val):
... """Always returns a list containing the indices of val in the_list"""
... return [index for index, value in enumerate(l) if value == val]
...
>>> l = ['bar','foo','bar','baz','bar','bar']
>>> q = 'bar'
>>> print indices(l,q)
[0, 2, 4, 5]
>>> print indices(l,'bat')
[]
>>> print indices('abcdaababb','a')
[0, 4, 5, 7]
>>>
자, 이제 이 질문과 답변을 검토한 뒤, 이것이 정확히 내가 모든 것을 자신의 제안됩니다 어떤 FMc [이전 오토메이티드] [2]. 당시 나는 내가 처음 이 질문에 답을 볼 수 있는 , t # 39 답변됨 didn&, 내가 didn& # 39, t 이해해야 한다. 예를 들어 다소 도움이 될 내 상세한 이해를 바란다.
T , # 39 위에 한 줄의 코드를 경우 여전히 doesn& 너회가 구글 & # 39, 파이썬, 내가 말이 돼 매우 추천합니까 comprehension& 나열하십시오 # 39. 몇 분 정도 걸리며 숙지합니다. # 39 의 it& 중 하나만 많은 파이썬 코드를 사용할 수 있도록 강력한 기능을 개발할 수 있는 기쁨을.
[2]: # 17300987 https://stackoverflow.com/questions/176918/finding-the-index-of-an-item-given-a-list-containing-it-in-python/17300987
변형 및 user7177 답을 한 수 있는 FMc 의 경우 모든 지수 엔트리여야 복귀하십시오 부여하느뇨 딕트:
>>> a = ['foo','bar','baz','bar','any', 'foo', 'much']
>>> l = dict(zip(set(a), map(lambda y: [i for i,z in enumerate(a) if z is y ], set(a))))
>>> l['foo']
[0, 5]
>>> l ['much']
[6]
>>> l
{'baz': [2], 'foo': [0, 5], 'bar': [1, 3], 'any': [4], 'much': [6]}
>>>
1 이 liner 를 사용할 수도 있습니다 단일 항목을 지수 모두 수행할 수 있습니다. 하지만, 제가 보장은 없다고 효율성을 위해 사용 횟수를 줄일 수 있도록 한 세트 () 는 람다 (λ) 입니다.
name ="bar"
list = [["foo", 1], ["bar", 2], ["baz", 3]]
new_list=[]
for item in list:
new_list.append(item[0])
print(new_list)
try:
location= new_list.index(name)
except:
location=-1
print (location)
만일 이 계정 문자열을 목록에 없는 경우, 그 위치를 목록에서 # 39 너무 isn& t = - 1