简单的python嵌套循环 - 索引超出范围

bab*_*eii 1 python for-loop list set

当我运行以下代码时,我收到一个错误:

def genSet(nums):
    for i in range(0, len(nums)-1):
        for x in range(0, len(nums)-1):
            if nums[x] == nums[i]:
                del nums[x] 
    return nums

a = [5, 4, 3, 5, 6, 7, 8, 5, 4, 3]  
print genSet(a)
Run Code Online (Sandbox Code Playgroud)

输出:

Traceback (most recent call last):
  File "49.py", line 9, in <module>
    print genSet(a)
  File "49.py", line 4, in genSet
    if nums[x] == nums[i]:
IndexError: list index out of range
Run Code Online (Sandbox Code Playgroud)

据我所知(我用"print x,i"替换了if语句)两个for循环很好,那么为什么索引超出范围?

gef*_*fei 5

不这样做del nums[x],因为这样你nums缩短了,从而获得了一个例外.

你可以简单地从列表中创建一个集合 set_nums = set(nums)