Python Цикл және if if операторы үшін деректерді сұрыптау

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 жауаптар

Looping кезінде 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 (элемент) тек тізімдегі элементтің бірінші орын орнын қайтарады. Мұны оңай орындауға болады:

fНЕМЕСЕi in range(0,len(data)):
  if data[i] == 'None':
    new_data.append(i)

бұл сізге қажетті шығарылымды қамтамасыз етуі керек

НЕМЕСЕ

Sven-тің жауабын тексеріңіз

1
қосылды
@SvenMarnach: мұның бәрі дұрыс. Мен оны екі рет тексердім; шын мәнінде O (1). Мені тікелей түзетуге рахмет.
қосылды автор Tim Pietzcker, көзі
@аронфален оны [2,4] беруге тиіс. Бұл мен үшін.
қосылды автор unni, көзі
@aaronphalen мен сенімді емеспін. Менің ойымша, сіз Свенның жауабына баруыңыз керек. Тимтың айтуынша, бұл Pythonic
қосылды автор unni, көзі
неге менің питоным түкіріп жатыр [2, 2], мұны мен сізді қалай істейін?
қосылды автор phales15, көзі
@unni Мен келісемін, бірақ менің python тітіркендіретін кейбір себептері бар [2,2]. Мен жаңа қабықты ашуға тырыстым, мен сол нәрсені аламын. Мәселе қандай болуы мүмкін?
қосылды автор phales15, көзі