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)
使用列表理解.
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我上面列出的列表理解和方法的一个更冗长的等价物.