鱼C论坛

 找回密码
 立即注册
查看: 1732|回复: 6

[已解决]总是提示列表索引超出范围

[复制链接]
发表于 2021-1-26 13:58:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 basketmn 于 2021-1-26 13:59 编辑
def func(n):
    for i in range(len(n)):
        for j in range(i+1,len(n)):
            if n[i]==n[j]:
                n.pop(n[j])
            
    return n




n=[1,1,1,1,1,1,1,5,5,5,5]
a=func(n)
print(a)
要求就是删除列表中重复的元素
最佳答案
2021-1-26 15:09:02
def fanc(n):
    x=[]
    for i in range(len(n)):
        if not n[i] in x:
            x.append(n[i])
    print(x)
试试这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2021-1-26 14:34:32 | 显示全部楼层
可以直接用强制类型转换,set(n),将n变为集合,就消去了所有的重复元素,再用list变为列表
n=[1,1,1,1,1,1,1,5,5,5,5]
n = list(set(n))
print(n)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-26 14:58:44 From FishC Mobile | 显示全部楼层
首先,感谢你回复!
我就是想知道还有没有其他方法
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-26 15:01:32 | 显示全部楼层
 n.pop(n[j])
这一句会使 n 的长度变小,但是你两个 for 循环的最大长度又不变,所以下标就会超出。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-26 15:09:02 | 显示全部楼层    本楼为最佳答案   
def fanc(n):
    x=[]
    for i in range(len(n)):
        if not n[i] in x:
            x.append(n[i])
    print(x)
试试这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2021-1-26 15:14:22 | 显示全部楼层
basketmn 发表于 2021-1-26 14:58
首先,感谢你回复!
我就是想知道还有没有其他方法

定义一个新列表,通过判断新列表中有没有该元素,如果没有,则添加到新列表中,否则不做任何操作,最后返回新列表就行。
def func(n):
    new_n = []
    for i in n:
        if i not in new_n:
            new_n.append(i)
    return new_n

n = [1, 1, 1, 1, 1, 1, 1, 5, 5, 5, 5]
a = func(n)
print(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-1-26 15:37:55 From FishC Mobile | 显示全部楼层
感谢5,6楼的兄弟,你们俩的方法一样,不好意思,最佳只有一个,我只能给回答最快的,再次对六楼的兄弟说句不好意思!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-1-16 16:41

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表