Данные сортировки Python для цикла и оператора if - PullRequest
3 голосов
/ 28 октября 2011
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]? Это то, что я хочу. Спасибо!

Ответы [ 4 ]

6 голосов
/ 28 октября 2011

Используйте enumerate() во время цикла.Будет отслеживаться как текущий элемент, так и его индекс:

[index for index, x in enumerate(data) if x == "None"]
2 голосов
/ 28 октября 2011
for idx, item in enumerate(data):
    if item == 'None':
        new_data.append(idx)

еще лучше, просто используйте понимание списка, как в ответе Свена

1 голос
/ 28 октября 2011

data.index (item) возвращает только позицию первого вхождения элемента в вашем списке. Вы можете просто сделать это:

for i in range(0,len(data)):
  if data[i] == 'None':
    new_data.append(i)

это должно дать вам необходимый вывод

ИЛИ

проверить ответ Свена

1 голос
/ 28 октября 2011

Попробуйте:

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

In [2]: [i for i,val in enumerate(data) if val == 'None']
Out[2]: [2, 4]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...