首页 > 解决方案 > 我将如何删除此 python 列表中 1 之前的所有零

问题描述

result = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0]

我想把这个列表变成

result = [1, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 0]

我尝试使用 while 循环来不断删除零,直到找到 1 但我似乎无法让它工作。

for x in result:
    while (x == 0):
        result.remove(0)

标签: pythonlistloops

解决方案


如果总是有一个 1,你可以找到它并删除它之前的所有内容:

del result[:result.index(1)]

或者如果它可能全为零:

if any(result):
    del result[:result.index(1)]

或者

try:
    del result[:result.index(1)]
except ValueError:
    pass

或者

result.append(1)
del result[:result.index(1)]
result.pop()

推荐阅读