规格: 我想使用remove函数(在列表中),我更喜欢避免类型转换。你知道吗
l = [2, 3, 3, 4, 6, 4, 6, 5]
q=len(l)
for i in range (0, q):
for g in range (i+1, q):
if l[g]==l[i]:
q-=1 #decremented q to account for reduction in list size.
l.remove(l[g])
print(l)
错误:if l[g]==l[i]:
索引器错误:列表索引超出范围
我知道以前也有用户问过类似的问题。由于他们没有上述限制,我想请你把这当作一个单独的问题来处理。谢谢!你知道吗
既然你提到你不想要类型转换,所以我的解决方案是使用
while loop
现在,请允许我解释一下代码中的问题。当您使用range函数时,它会在循环的第一次运行时保留起始值和结束值,因此即使您在循环的最后更改限制,它也不会更改range循环,因此最终会得到
index out of bounds
错误。希望这对您有所帮助:)
使用
set
是筛选集合的简单而直接的方法。如果您不需要特定顺序的列表,您可以直接使用上面的集合。sorted
函数返回一个列表(使用默认顺序)。你知道吗您的解决方案不起作用,因为range()存储q的值,稍后将忽略q值的更改。例如:
即使我改变m,range()仍然会在循环中运行10次。因此,当您更改列表的大小时,即使您更改了q,您仍将尝试访问不再存在的元素。你知道吗
相关问题 更多 >
编程相关推荐