basketmn 发表于 2021-1-26 17:31:54

再接着上次那个提示列表索引超出范围

def func(n):
    for i in range(len(n)):
      for j in range(i+1,len(n)-1):
            if n==n:
                n.pop(n)
            
    return n




n=
a=func(n)
print(a)

上次大佬@°蓝鲤歌蓝说 n.pop(n)这一句会使 n 的长度变小,但是你两个 for 循环的最大长度又不变,所以下标就会超出。
各位大佬按我的想法帮我修改下

wp231957 发表于 2021-1-26 17:50:56

你都不说你想实现啥,难道要人猜吗

hrp 发表于 2021-1-26 18:06:58

用while循环吧,控制索引是否往前走,for循环无法控制
def func(n):
    index = 0
    while index < (len(n)-1):
      if n == n:
            n.pop(index)
            continue
      index += 1
    return n




n=
a=func(n)
print(a)

basketmn 发表于 2021-1-26 18:21:45

wp231957 发表于 2021-1-26 17:50
你都不说你想实现啥,难道要人猜吗

要求就是删除列表中重复的元素

wp231957 发表于 2021-1-26 18:32:48

basketmn 发表于 2021-1-26 18:21
要求就是删除列表中重复的元素

set最简单

记忆的欠片 发表于 2021-1-26 18:36:37

本帖最后由 记忆的欠片 于 2021-1-26 18:39 编辑

def func(n):
    k = n[:]
    for i in range(len(n)):
      for j in range(i+1,len(n)-1):
            if n==n:
                k.remove(n)
            
    return k




n=
a=func(n)
print(a)

循环语句,最好不要操作原列表。

记忆的欠片 发表于 2021-1-26 18:55:27

def func(n):
        k = []
        for i in n:
                if i not in k:
                        k.append(i)
        return k
这里附上另一种方式

basketmn 发表于 2021-1-26 19:14:09

记忆的欠片 发表于 2021-1-26 18:36
循环语句,最好不要操作原列表。

大佬,你的代码运行错误啊
ValueError: list.remove(x): x not in list

basketmn 发表于 2021-1-27 05:50:45

大佬们,帮我解答下,谢谢
页: [1]
查看完整版本: 再接着上次那个提示列表索引超出范围