Python 我已经使用append删除了重复项,但不知道它是如何工作的

Python 我已经使用append删除了重复项,但不知道它是如何工作的,python,Python,我使用此代码删除了数字列表中的重复数据,但我不确定是否准确;它是如何工作的,因为我是编程的初学者 numbers=[1, 2, 2, 4, 5, 4, 7, 8, 7] uniques=[] for number in numbers: if number not in uniques: uniques.append(number) print(uniques) 请尝试阅读代码中提到的注释。这可能有助于你理解 # input given by the user as b

我使用此代码删除了数字列表中的重复数据,但我不确定是否准确;它是如何工作的,因为我是编程的初学者

numbers=[1, 2, 2, 4, 5, 4, 7, 8, 7]
uniques=[]
for number in numbers:
    if number not in uniques:
        uniques.append(number)
print(uniques)

请尝试阅读代码中提到的注释。这可能有助于你理解

# input given by the user as below
numbers=[1, 2, 2, 4, 5, 4, 7, 8, 7,9,1] 
# create blank array which store the result
uniques=[] 
# execute the for loop for input array
for number in numbers: 
    # individual array element is given as input. Ex. 1 is given as input
    # Check that number is present in the unique array. 
    if number not in uniques: 
        #If not than appned to the result array
        uniques.append(number) 
#print the result array
print(uniques)
number=[1,2,2,4,5,4,7,8,7]
uniques=[]
对于数字中的数字:
如果编号不是唯一的:
uniques.append(编号)
打印(uniques)
您的代码通过迭代列表中的所有项目来删除起始列表中的重复项,检查它是否在
uniques
列表中,如果不在,则附加到它

让我们试着把它分解一下。如果将print语句放在此处,您可以看到它是如何迭代的:

numbers = [1, 1, 2, 3, 3]
uniques = []
for number in numbers:
    print(number)
例如,对于第一次迭代,我们检查
1
是否不存在于
uniques
列表中,如果编号不在uniques:。因为它一开始是空的,所以它不是空的。如果条件满足,它将附加到您的列表中。然后在第二次迭代中,当再次出现
1
时,我们进行同样的检查,看看它是否不在
uniques
中。由于列表是
[1]
,因此返回
False
,并跳过
append
语句。这将一直持续,直到迭代了
数字
中的所有值

删除重复项的简单示例如下所示:

numbers = list(set([1, 1, 2, 3, 3]))
print(numbers)

这是因为Python中的
set
类型只允许每个值有一个实例。然后我们将其设置回列表,基本上执行与上面代码相同的操作。您必须注意的唯一缺点是,
set
类型不允许顺序,因此可能会丢失输入列表的原始顺序。

Python使代码实际上可以像读取一样工作。您正在创建一个新列表,uniques,仅当号码不在新列表中时才添加到此新列表。您对原始列表中的每个数字都这样做,因此您正在“删除”重复项。请注意,原始数字列表不受此代码的影响。谢谢@Shane Smiskol mate。非常感谢。
numbers = list(set([1, 1, 2, 3, 3]))
print(numbers)
[1, 2, 3]