Python Сартаванне дадзеных для цыклу, і калі аператар

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 адказы

Выкарыстоўвайце пералічэння() у той час як па замкнёным коле. Гэта будзе адсочваць як, бягучы элемент і яго індэкс:

[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 (пункт) толькі вяртае пазіцыю першага ўваходжання гэтага пункта ў спісе. Вы можаце проста зрабіць гэта:

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

гэта павінна даць вам неабходны выхад

АБО

праверыць адказ Свена

1
дададзена
@SvenMarnach: ой, вы маеце рацыю. Я толькі двойчы праверыў; пошук на самай справе ўяўляе сабой Аб (1). Дзякуем за наладу мне прама на гэтым.
дададзена аўтар Tim Pietzcker, крыніца
@aaronphalen ён павінен даць [2,4]. Гэта робіць для мяне.
дададзена аўтар unni, крыніца
@aaronphalen я не ўпэўнены. Я думаю, вы павінны пайсці з адказам Свена хоць. Як Цім адзначыў, То больш прарочы
дададзена аўтар unni, крыніца
чаму мой пітон выплёўваючы [2, 2], калі я гэта зрабіць свой шлях ^?
дададзена аўтар phales15, крыніца
@unni я згодны, але ёсць некаторыя дзіўныя прычыны мой пітон выплёўваючы [2,2]. Я паспрабаваў адкрыць новую абалонку, і я атрымліваю тое ж самае. Што можа быць праблема?
дададзена аўтар phales15, крыніца