Если не выполнить условную замену списка, проблема в размере списка? - PullRequest
0 голосов
/ 31 марта 2020

Я очень плохо знаком с Python, и у меня возникла проблема с условной заменой элементов списка.

У меня есть файл CSV, из которого мне нужно извлечь один из столбцов с 3256 элементов, все поплавки; В этом столбце мне нужно найти элементы, которые удовлетворяют условию z-0.04 > i > z+0.04.

Образец элементов: 0,285326, 0,38674, 0,38669, 0,223641, 0,280949 ...

Далее, обратно в мой CSV файл, мне нужно будет удалить всю строку, которая состоит из z-0.04 > i > z+0.04 элементов, но, поскольку я до сих пор не знаю, как это сделать, я просто хочу заменить их на 'DEL'.

Так что здесь мой код:

import csv

f = open('msample.csv')
csv_r = csv.reader(f)
csv_f = csv.writer(f)

#converting the redshift column into a list
redshlist = []

for row in csv_r:
    redshlist.append(row[3])


#converting all the elements in redshlist from str to float
redshlist = [float(i) for i in redshlist]

z = 0.226

credshlist = []

for i in redshlist:
    if z - 0.04 > i > z + 0.04:
        i = 'DEL'
    credshlist.append(i)

credshlist = redshlist

print(redshlist)

К сожалению, это не заменяет элементы, для которых z-0.04 > i > z+0.04 имеет значение true, просто печатает мой столбец CSV без изменений. Я не могу найти ошибку, кусок кода с условной заменой отдельно работает в интерпретаторе python (я пробовал до 20 элементов) ... Может кто-нибудь сказать мне, что не так?

...