목록을 반복하고 특정 조건을 충족하면 항목의 색인을 인쇄하고 싶습니다. 어떻게해야합니까?
예:
testlist = [1,2,3,5,3,1,2,1,6]
for item in testlist:
if item == 1:
print position
답변
흠. 여기에 목록 이해력이있는 대답이 있었지만 사라졌습니다.
여기:
[i for i,x in enumerate(testlist) if x == 1]
예:
>>> testlist
[1, 2, 3, 5, 3, 1, 2, 1, 6]
>>> [i for i,x in enumerate(testlist) if x == 1]
[0, 5, 7]
최신 정보:
자, 제너레이터 표현식이 필요합니다. 제너레이터 표현식이 있습니다. 다음은 for 루프에서 목록 이해력을 다시 보여줍니다.
>>> for i in [i for i,x in enumerate(testlist) if x == 1]:
... print i
...
0
5
7
이제 발전기를 만들겠습니다 …
>>> (i for i,x in enumerate(testlist) if x == 1)
<generator object at 0x6b508>
>>> for i in (i for i,x in enumerate(testlist) if x == 1):
... print i
...
0
5
7
그리고 충분히, 우리는 변수에 변수를 할당하고 거기에서 사용할 수 있습니다 …
>>> gen = (i for i,x in enumerate(testlist) if x == 1)
>>> for i in gen: print i
...
0
5
7
그리고 내가 FORTRAN을 쓰는 데 사용했다고 생각합니다.
답변
다음은 어떻습니까?
print testlist.index(element)
찾을 요소가 실제로 목록에 있는지 확실하지 않은 경우와 같이 예비 점검을 추가 할 수 있습니다.
if element in testlist:
print testlist.index(element)
또는
print(testlist.index(element) if element in testlist else None)
코드가 덜 명확하지만 때로는 더 효율적이기 때문에 마음에 들지 않는 “파이 토닉 방식”
try:
print testlist.index(element)
except ValueError:
pass
답변
열거 형 사용 :
testlist = [1,2,3,5,3,1,2,1,6]
for position, item in enumerate(testlist):
if item == 1:
print position
답변
for i in xrange(len(testlist)):
if testlist[i] == 1:
print i
요청 된 범위 대신 xrange (주석 참조).
답변
이 작업을 수행하는 다른 방법이 있습니다.
try:
id = testlist.index('1')
print testlist[id]
except ValueError:
print "Not Found"
답변
[x for x in range(len(testlist)) if testlist[x]==1]
답변
아래를 시도하십시오 :
testlist = [1,2,3,5,3,1,2,1,6]
position=0
for i in testlist:
if i == 1:
print(position)
position=position+1