복붙노트

[PYTHON] 목록에서 항목의 위치를 ​​얻는 방법?

PYTHON

목록에서 항목의 위치를 ​​얻는 방법?

목록을 반복하고 특정 조건을 충족하는 경우 항목의 색인을 인쇄하고 싶습니다. 어떻게하면 좋을까요?

예:

testlist = [1,2,3,5,3,1,2,1,6]
for item in testlist:
    if item == 1:
        print position

해결법

  1. ==============================

    1.흠. 여기에 목록으로 이해하는 대답이 있었지만 사라졌습니다.

    흠. 여기에 목록으로 이해하는 대답이 있었지만 사라졌습니다.

    이리:

     [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을 쓰는 것을 생각했습니다.

  2. ==============================

    2.다음은 어떨까요?

    다음은 어떨까요?

    print testlist.index(element)
    

    찾으려는 요소가 실제로 목록에 있는지 여부가 확실하지 않으면 다음과 같은 예비 검사를 추가 할 수 있습니다.

    if element in testlist:
        print testlist.index(element)
    

    또는

    print(testlist.index(element) if element in testlist else None)
    

    또는 "pythonic way"입니다. 코드가 덜 분명하기 때문에 내가별로 좋아하지 않지만 때때로 더 효율적입니다.

    try:
        print testlist.index(element)
    except ValueError:
        pass
    
  3. ==============================

    3.열거 형을 사용하십시오.

    열거 형을 사용하십시오.

    testlist = [1,2,3,5,3,1,2,1,6]
    for position, item in enumerate(testlist):
        if item == 1:
            print position
    
  4. ==============================

    4.

    for i in xrange(len(testlist)):
      if testlist[i] == 1:
        print i
    

    범위 대신 xrange를 요청하십시오 (의견 참조).

  5. ==============================

    5.

    [x for x in range(len(testlist)) if testlist[x]==1]
    
  6. ==============================

    6.이렇게하는 또 다른 방법은 다음과 같습니다.

    이렇게하는 또 다른 방법은 다음과 같습니다.

    try:
       id = testlist.index('1')
       print testlist[id]
    except ValueError:
       print "Not Found"
    
  7. ==============================

    7.목록의 크기가 충분하고 스파 스 색인의 값을 찾을 것으로 예상되는 경우 목록의 모든 값을 반복 할 필요가 없으므로이 코드가 훨씬 빠르게 실행될 수 있다고 생각하십시오.

    목록의 크기가 충분하고 스파 스 색인의 값을 찾을 것으로 예상되는 경우 목록의 모든 값을 반복 할 필요가 없으므로이 코드가 훨씬 빠르게 실행될 수 있다고 생각하십시오.

    lookingFor = 1
    i = 0
    index = 0
    try:
      while i < len(testlist):
        index = testlist.index(lookingFor,i)
        i = index + 1
        print index
    except ValueError: #testlist.index() cannot find lookingFor
      pass
    

    값을 많이 찾으려면 목록에 "인덱스"를 추가하고 마지막에 목록을 인쇄하여 반복 당 시간을 절약해야합니다.

  8. ==============================

    8.필자는 Tkinter 라이브러리에서 curselection () 메서드를 사용하는 것이 유용 할 것이라고 생각합니다.

    필자는 Tkinter 라이브러리에서 curselection () 메서드를 사용하는 것이 유용 할 것이라고 생각합니다.

    from Tkinter import * 
    listbox.curselection()
    

    이 방법은 Tkinter 목록 상자 위젯에서 작동하므로 목록 대신 이들 중 하나를 구성해야합니다.

    이렇게하면 다음과 같은 위치가 반환됩니다.

    ( '0',) (Tkinter의 최신 버전은 대신에 int리스트를 반환 할 수있다)

    첫 번째 위치는 항목 위치에 따라 번호가 변경됩니다.

    자세한 내용은 다음 페이지를 참조하십시오. http://effbot.org/tkinterbook/listbox.htm

    인사말.

  9. ==============================

    9.왜 복잡한 것들입니까?

    왜 복잡한 것들입니까?

    testlist = [1,2,3,5,3,1,2,1,6]
    for position, item in enumerate(testlist):
        if item == 1:
            print position
    
  10. ==============================

    10.

    testlist = [1,2,3,5,3,1,2,1,6]
    for id, value in enumerate(testlist):
        if id == 1:
            print testlist[id]
    

    나는 그것이 당신이 원하는 것과 정확히 같아요. ;-) 'id'는 항상 목록에있는 값의 색인입니다.

  11. from https://stackoverflow.com/questions/364621/how-to-get-items-position-in-a-list by cc-by-sa and MIT license