Дані сортування Python для циклу та statement

data = ['cat', 'dog', 'None', 'Turtle', 'None']
new_data = []
for item in data:
    if item == 'None':
        new_data.append(data.index(item))
print new_data

>> [2,2]

Як мені перейти, щоб отримати в цьому магазині нові дані як [2,4] ? Це те, що я хочу. Дякую!

3

4 Відповіді

Використовуйте enumerate() під час циклічності. Це буде відстежувати як поточний елемент, так і його індекс:

[index for index, x in enumerate(data) if x == "None"]
6
додано
for idx, item in enumerate(data):
    if item == 'None':
        new_data.append(idx)

Але краще, просто використовуйте розуміння списку, як у відповіді Свена

2
додано

Спробуйте:

In [1]: data = ['cat', 'dog', 'None', 'Turtle', 'None']

In [2]: [i for i,val in enumerate(data) if val == 'None']
Out[2]: [2, 4]
1
додано

data.index (item) повертає лише позицію першого виду елемента у вашому списку. Ви можете просто зробити це:

fАБОi in range(0,len(data)):
  if data[i] == 'None':
    new_data.append(i)

це має дати вам потрібний результат

АБО

перевірте відповідь Свена

1
додано
@SvenMarnach: Ой, ви маєте рацію. Я просто перевірив його двічі; пошук дійсно є O (1). Спасибі за те, що мене прямо налаштували на це.
додано Автор Tim Pietzcker, джерело
@аарфонфал він повинен дати [2,4]. Це для мене.
додано Автор unni, джерело
@Aaronphalen я не впевнений Я думаю, що ви повинні піти з відповіддю Свена, хоча. Як Тим зазначив, що це більше Pythonic
додано Автор unni, джерело
чому мій пітонь виплескує [2, 2], коли я роблю це своєю дорогою ^?
додано Автор phales15, джерело
@unni Я згоден, але отримав кілька непарних причин, яким пліт виганяє [2,2]. Я намагався відкрити нову оболонку, і я отримую те саме. Що може бути проблемою?
додано Автор phales15, джерело
ІТ КПІ - Python
ІТ КПІ - Python
625 учасників

Канал обговорень про всякі штуки зі світу пайтону. Прохання: 0. мати повагу одне до одного; 1. не матюкатися в сторону людей; 2. не захламляти тред повідомленнями по одному слову;