【发布时间】:2011-03-18 23:12:41
【问题描述】:
嘿,我试图从列表中删除一个项目(不使用set):
list1 = []
for i in range(2,101):
for j in range(2,101):
list1.append(i ** j)
list1.sort()
for k in range(1,len(list1) - 1):
if (list1[k] == list1[k - 1]):
list1.remove(list1[k])
print "length = " + str(len(list1))
set 函数工作正常,但我想应用此方法。除了我得到:
IndexError: list index out of range
关于声明:
if (list1[k] == list1[k - 1]):
编辑添加 (感谢 Ned Batchelder)工作代码是:
list1 = []
for i in range(2,101):
for j in range(2,101):
list1.append(i ** j)
list1.sort()
k = 0
while k < len(list1) - 1: # while loop instead of for loop because "The range function is evaluated once before the loop is entered"
k += 1
if (list1[k] == list1[k - 1]):
list1.remove(list1[k])
list1.sort()
k -= 1 # "If you find a duplicate, you don't want to move onto the next iteration, since you'll miss potential runs of more than two duplicates"
print "length = " + str(len(list1))
【问题讨论】:
-
我不确定你在问什么 - 什么设置功能? “应用这种方法”是什么意思?
-
我认为他不想在他的列表中有重复项。
-
set对象,就像在s = set( [ 2, 2, 3, 4 ] )我猜 :) 是作业吗? -
我认为(希望)您这样做只是为了教育目的?
-
也许你当时应该这么说,而不是让人们猜测。 (您可能还应该尝试接受其他问题的答案,阅读问题并投票)