python - 如何更正我的代码,该代码将充当 python 中的排序函数模拟
问题描述
a_trial_list = [11, 965, 253, 7]
for i in range(len(a_trial_list) * 2):
for j in range(i):
if a_trial_list[j] > a_trial_list[j + 1]:
a_trial_list[j],a_trial_list[j + 1] = a_trial_list[j + 1], a_trial_list[j]
a_trial_list.append(1)
for x in a_trial_list:
if x == 1:
a_trial_list.remove(x)
print(a_trial_list)
# this code is returning [7, 11, 253, 965, 1, 1, 1, 1, 1]
# it should return [7, 11, 253, 956]
有人可以向我解释为什么它不删除最后的 1 吗?
解决方案
您可以使用 try-except 子句来处理索引错误,而不是1
每次都追加,然后将其删除。这是代码:
a_trial_list = [11, 965, 253, 7]
for i in range(len(a_trial_list) * 2):
for j in range(i):
try:
if a_trial_list[j] > a_trial_list[j + 1]:
a_trial_list[j],a_trial_list[j + 1] = a_trial_list[j + 1], a_trial_list[j]
except IndexError as e:
pass
print(a_trial_list)
如果您只想1
从列表中删除值,可以使用以下列表推导:
a_trial_list[:] = [x for x in a_trial_list if x != 1]