2014-11-06 3 views
0

정확하게 전달하려는 것을 설명하는 방법을 모릅니다.리스트의 특정 인덱스가 아닌 것 - 파이썬

일부만 검색하여 목록에서 요소의 색인을 가져 오려고합니다.

처럼이 "-T4"가 "목록"난 단지 "-T"이 같은

뭔가를 검색하여 그것에 대한 인덱스를 얻을 수 있기를 원하는 곳 목록에서라고

,하지만하지 않습니다 작업 :

indexx = list.index("-T") 

목록의 실제 요소 "-T4"

+0

list'는'다른 변수 이름을 사용하여 시도해보십시오 정도 작동 형 – dazedconfused

답변

1

일반적인 개념 것은 당신이 언급하고있는이 목록 항목의 문자열 검색있다하더라도.

목록을 반복하고 각 항목을 비교해야합니다 (원하는대로 유연한 방식에 따라 정규식 또는 문자열 방법을 사용할 수 있음) 각 항목을 비교하여 해당 위치의 항목에 원하는 하위 문자열.

enumerate을 사용하여 목록을 반복 할 경우 색인을 찾을 때 되돌릴 수 있습니다 (찾을 수없는 경우 -1).

한 가지 가능한 방법을 구현 :

#!/usr/bin/env python 

o1 = ['A3', 'B3', 'C1', 'T2'] 
o2 = ['A3', 'B3', 'C1'] 

def partialSearch(obj, key): 
    for idx, item in enumerate(obj): 
     if key in item: 
      return idx 

    return -1 


print "found: {0}".format(partialSearch(o1, 'T')) 
print "found: {0}".format(partialSearch(o2, 'T')) 

반환 값 : 응답

found: 3 
found: -1 

편집을 영업 이익에서 코멘트 : 그것은 정수를 반환 것

, 인덱스를 어디에 발견 된 키 (찾지 못하면 -1, 기술적으로 인덱스로 사용할 수 있지만이 경우에는 사용하지 않아야 함). 이이 반환 즉

loc = partialSearch(o1, 'T') 
print "value at idx {0}: {1}".format(loc, o1[loc]) 

, 다시 목록 중 항목을 가져올 수 있습니다 :

value at idx 3: T2 

또한, (idx, item)는 말 함수에서 튜플을 반환 할 수 있습니다. 어떻

+0

내장,하지만 난 정수 내가 돌아갈 수 있도록 반환이 필요합니다 초기 목록으로 이동하여 목록에서 해당 요소를 가져 와서 다른 변수에 저장합니다. –

1

다음 일치 = [I가 난으로 myList에서 I에서 "-T"경우]

이 myList에 for i in mylist 각 항목 통과는 (a 비트에 각 항목을 I 전화) 및 if "-T" in i , i (첫 번째 i)을 포함하는 새 목록에 항목을 추가합니다.

0
[i for i, x in enumerate(mylist) if "-T" in x] 

그러면 쿼리와 일치하는 모든 인덱스의 목록이 반환됩니다. re 모듈을 통해

1

,

>>> l = ['-T4', 'B2', 'C6'] 
>>> l.index([ x for x in l if re.match(r'.*-T', x)][0]) 
0 
관련 문제