【发布时间】:2021-11-17 22:01:03
【问题描述】:
G'day。我是编码和 python 的新手。
我的目标是尝试创建一个代码,如果 y 中的元素到达下一个 0,则所有 0 到 n(在下一个零之前)都将变为 n。执行以下代码后,示例输出应如下所示:
y = [0,1,2,3,4,5,6,7,8,0,1,0,1,2,3,4,5,6,7]
# I am interating over two inputs. y_1 = y[1:] and append 0 at the end.
y_1 = [1,2,3,4,5,6,7,8,0,1,0,1,2,3,4,5,6,7,0]
expected output:
x = [8, 8, 8, 8, 8, 8, 8, 8, 8, 1, 1, 7, 7, 7, 7, 7, 7, 7, 7]
我认为我面临的问题来自以下代码中指定的从列表中删除[0,1,2,3,4,5,6,7,8] 后没有循环的while 循环(逻辑上我应该循环?):
y = [0,1,2,3,4,5,6,7,8,0,1,0,1,2,3,4,5,6,7]
y_1 = [1,2,3,4,5,6,7,8,0,1,0,1,2,3,4,5,6,7,0]
x = []
while len(y):
for i, j in zip(y, y_1):
if i > j:
z = i
for k in range(z+1):
x.append(y[i])
del y[0:z+1]
del y_1[0:z+1]
elif i == j:
z = 0
x.append(z)
del y[z]
del y_1[z]
任何建议将不胜感激:)
【问题讨论】:
-
您不应该从您正在迭代的列表中删除。
-
y_1,在这段代码中,是 y[1:],末尾追加 0
-
不要使用
del,因为这会更改您在for-loop -zip(y, y_1)中使用的列表 - 它可以在您预期之前停止它。此外,您无需删除它即可获得预期结果。并删除while len(y)- 你也不需要它。 -
较短的
y_1 = y[1:] + [0]
标签: python list while-loop