Как получить позицию позиции в списке?

Я повторяю список, и я хочу распечатать индекс элемента, если он удовлетворяет определенному условию. Как мне это сделать?

Пример:

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

10 Solutions collect form web for “Как получить позицию позиции в списке?”

Хммм. Здесь был ответ со списком, но он исчез.

Вот:

  [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) 

или «pythonic way», что мне не очень нравится, потому что код менее ясен, но иногда более эффективен,

 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: print "Not Found" 
 [x for x in range(len(testlist)) if testlist[x]==1] 

Если ваш список достаточно велик, и вы только ожидали найти значение в разреженном числе индексов, подумайте, что этот код может выполняться намного быстрее, потому что вам не нужно перебирать каждое значение в списке.

 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 

Если вы ожидаете найти значение много, вы должны просто добавить «индекс» в список и распечатать список в конце, чтобы сэкономить время на итерацию.

Я думаю, что было бы полезно использовать метод curselection () из библиотеки Tkinter:

 from Tkinter import * listbox.curselection() 

Этот метод работает с виджетами Tkinter listbox, поэтому вам нужно будет создать один из них вместо списка.

Это вернет такую ​​позицию:

('0',) (хотя более поздние версии Tkinter могут вместо этого возвращать список int)

Это для первой позиции, и число будет меняться в соответствии с позицией позиции.

Для получения дополнительной информации см. Эту страницу: http://effbot.org/tkinterbook/listbox.htm

Приветствую.

Зачем усложнять вещи?

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

Наверное, это то, чего ты хочешь. 😉 'id' всегда будет индексом значений в списке.

  • Как проверить, пуст ли пул в Python?
  • Создание списка в Python с несколькими копиями данного объекта в одной строке
  • понимание списка python для создания двух значений на одной итерации
  • Удаление уникальных элементов из списка
  • Элементы счетчика Python в списке
  • поместите 0 перед номерами в списке, если они меньше десяти (в python)
  • Python: в чем разница между (1,2,3) и , и когда я должен использовать их?
  • Как заставить Ipython выводить список без разрывов строк после элементов?
  • Что такое «гомогенность» в документации по списку Python?
  • Как закрепить два списка списков в Python?
  • python выбирает определенные элементы из списка
  •  
    Interesting Posts for Van-Lav

    Как вызвать действие при нажатии кнопки в Tkinter

    Когда использовать .shape и когда использовать .reshape?

    B-сплайн-интерполяция с Python

    Изменить Python / PIP для автоматической установки модулей при невозможности импорта

    Совместимость Python C

    Добавление значений из кортежей одинаковой длины

    django-admin бросает синтаксическую ошибку – проблема с конфигурацией Я думаю

    virtualenv – не-сайт-пакеты для меня не работают

    Как заставить Python bs4 корректно работать с XML?

    Почему некоторые значения сеанса фласка исчезают из сеанса после закрытия окна браузера, но затем появляются позже, если я не добавлю их?

    Как заставить tkinter работать с установкой Ubuntu по умолчанию Python 2.7?

    Как разделить и проанализировать большой текстовый файл в python в режиме экономии памяти?

    Использование пула многопроцессорности python в терминале и в модулях кода для Django или Flask

    pythonic способ преобразования переменной в список

    numpy python 3.4.1 установка: Python 3.4 не найден в реестре

    Python - лучший язык программирования в мире.