While 循环在 1 次迭代后似乎没有循环
While loop does not seem to loop over after 1 iteration
你好。我是编码新手 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]
任何建议将不胜感激:)
我不知道你为什么使用 del
和 while
因为你应该得到预期的结果
y = [0,1,2,3,4,5,6,7,8,0,1,0,1,2,3,4,5,6,7]
y_1 = y[1:] + [0]
x = []
for i, j in zip(y, y_1):
if i > j:
z = i
for k in range(z+1):
x.append(y[i])
elif i == j:
z = 0
x.append(z)
print(x)
在 Python 中,您不应从用作 for
-循环的列表中删除元素,因为当它删除元素时,它会移动用作 for
- 的列表中的其他元素循环,它会产生意想不到的结果。
如果你真的想 运行 它在一些 while len(y)
中,那么你应该创建一个包含你想要保留的元素的新列表。或者你应该复制列表 - y_duplicated = y.copy()
- 并在重复列表中删除并在 for
循环之后替换原始列表 y = y_duplicated
你好。我是编码新手 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]
任何建议将不胜感激:)
我不知道你为什么使用 del
和 while
因为你应该得到预期的结果
y = [0,1,2,3,4,5,6,7,8,0,1,0,1,2,3,4,5,6,7]
y_1 = y[1:] + [0]
x = []
for i, j in zip(y, y_1):
if i > j:
z = i
for k in range(z+1):
x.append(y[i])
elif i == j:
z = 0
x.append(z)
print(x)
在 Python 中,您不应从用作 for
-循环的列表中删除元素,因为当它删除元素时,它会移动用作 for
- 的列表中的其他元素循环,它会产生意想不到的结果。
如果你真的想 运行 它在一些 while len(y)
中,那么你应该创建一个包含你想要保留的元素的新列表。或者你应该复制列表 - y_duplicated = y.copy()
- 并在重复列表中删除并在 for
循环之后替换原始列表 y = y_duplicated