从Python列表中删除行 - 包含特定数字的所有行

use*_*696 0 python file-io list

我希望从列表中删除第4位为0的行.当我现在写出文件时,它并没有消除所有零线.

counter = 0
for j in all_decisions:
    if all_decisions[counter][4] == 0:
        all_decisions.remove(j)
    counter += 1

ofile = open("non_zero_decisions1.csv","a")

writer = csv.writer(ofile, delimiter=',')

for each in all_decisions:
    writer.writerow(each)

ofile.close()
Run Code Online (Sandbox Code Playgroud)

sen*_*hin 5

使用列表理解.

all_decisions = [x for x in all_decisions if x[4] != 0]
Run Code Online (Sandbox Code Playgroud)

或者,使用filter.

all_decisions = filter(lambda x: x[4] != 0, all_decisions)
Run Code Online (Sandbox Code Playgroud)

你这样做的方式并不是一个好主意,因为all_decisions你在迭代它时会进行修改.如果你想在一个循环中这样做,我建议像:

temp = []
for x in all_decisions:
    if x[4] != 0:
        temp.append(x)
all_decisions = temp
Run Code Online (Sandbox Code Playgroud)

但这基本上只是filter我上面列出的列表理解和方法的一个更冗长的等价物.