Найти индекс кортежа при итерации по первому элементу кортежа - PullRequest
0 голосов
/ 27 февраля 2020

Как вы можете определить индекс кортежа при циклическом просмотре списка кортежей [0]?

List = [('SPAM', 1.0),('EGGS', 4.2),('SPAM', 4.4),('BACON', 9.0),('COFFEE', 2.3)]

for i,j in List:
    if i == 'SPAM':
        list.remove(???)

print(list)

Я пытался использовать функцию Enumerate (), но это не показалось чтобы дать мне правильный вывод либо.

List.pop()

Не появляется все время правильный индекс.

Может кто-нибудь помочь, пожалуйста?

Ответы [ 2 ]

0 голосов
/ 27 февраля 2020

Перечисление работает:

l = [('SPAM', 1.0),('EGGS', 4.2),('SPAM', 4.4),('BACON', 9.0),('COFFEE', 2.3)]

for idx, (i,j) in enumerate(l):
    if i == 'SPAM':
        print("FOUND SPAN at index %d" % idx)

Однако вы не должны изменять список во время итерации по нему, а использовать подход фильтрации следующим образом:

l_new = [(i, j) for i, j in l if i != 'SPAM']

0 голосов
/ 27 февраля 2020

Вы можете использовать del для удаления элемента с указанным индексом:

List = [('SPAM', 1.0),('EGGS', 4.2),('SPAM', 4.4),('BACON', 9.0),('COFFEE', 2.3)]

for (i, (e1, e2)) in enumerate(List):
    if e1 == 'SPAM':
        del List[i]

print(List) # prints [('EGGS', 4.2), ('BACON', 9.0), ('COFFEE', 2.3)]
...