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]? Это то, что я хочу. Спасибо!
[2,4]
Используйте enumerate() во время цикла.Будет отслеживаться как текущий элемент, так и его индекс:
enumerate()
[index for index, x in enumerate(data) if x == "None"]
for idx, item in enumerate(data): if item == 'None': new_data.append(idx)
еще лучше, просто используйте понимание списка, как в ответе Свена
data.index (item) возвращает только позицию первого вхождения элемента в вашем списке. Вы можете просто сделать это:
for i in range(0,len(data)): if data[i] == 'None': new_data.append(i)
это должно дать вам необходимый вывод
ИЛИ
проверить ответ Свена
Попробуйте:
In [1]: data = ['cat', 'dog', 'None', 'Turtle', 'None'] In [2]: [i for i,val in enumerate(data) if val == 'None'] Out[2]: [2, 4]