请问Python中该如何删除列表中的重复值

这个题目改来改去还是有问题,运行告诉我是第一行左右有问题(代码放在最后的图片里了)
但是我改成list1=eval(input())也好像不行
在这个改正过程中我还有几个问题:
1.list1=eval(input())
list1=list(list1)和list=list(map(int,input().split(",")))有什么区别
2.为什么在已经有while n>1的代码里还要在上一行加一个if n>1

img

写的错误的代码

img


谢谢各位啦

  1. input() -> 是python用来输入一段字符串的代码,所以获得的是一个字符串。比如”12344“, ”1+2", 或者“abcdefg".
  2. eval() -> 是python用来解析字符串表达式的方式,所以eval(input()), 如果输入"1+2",那么会得到输出3,但是如果输入”1 2 3“ 那就会出错。
  3. list=list(map(int,input().split(",")))
    这行代码比较复杂,首先,input()会获得一个字符串,split(",") 是将字符串按照分割符为","分割成一个字符串列表, 而map(int, yourlist), 表示将列表yourlist中的每个元素转化为int型。注意: 输入必须得包含分隔符",", 不然的话,获得的列表长度始终为1;另外,最终会获得一个包含整数的列表。
  • 其实如果删除的元素比较多,那么动态删除不是一个最优解。就像你的代码一样,你代码里的n变量是有问题的,因为在删除一个元素后,你需要重新获取一次n, 要不然,可能程序会一直在运行。

  • 我建议:
    你先遍历一遍你的list, 如果是第一次遍历,那么就直接插入到一个新列表里,并且在一个dict里标记这个值已经有了,这样每次我们只需要到这个DICT里查下,就知道当前的元素是不是有重复。这样的话基本上遍历一遍就出结果了。另外,从高往低遍历。