在不影响原始Python的情况下更改一次性列表

2024-10-04 01:23:57 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图通过将列表存储在第二个变量中并从列表中删除一个项目,然后检查列表中是否还有该项目的副本来检查列表中的内容是否重复。我得到的是:

disposableList = list
for i in disposableList:
    disposableList.remove(i)
    if i in disposableList:
        end = True

问题是当它从disposableList中删除i时,它也会从List中删除i。有没有办法做到这一点而不影响原来的名单?你知道吗


Tags: 项目in目的true内容列表forif
2条回答

我想指出的第一件事是变量名list的使用。这是一个危险的变量名,因为list实际上是python中的一个函数,如果在python中键入它,您会注意到它将变为紫色。一旦将名称list赋给变量,就不能再使用该函数的特性。为了便于解释,我将使用名称my_list。你知道吗

另外,disposableList = my_list不会创建您正在使用的列表的副本。它只是将原始列表存储在一个新的变量名下。你知道吗

您会发现,使用for循环来替换disposableList = my_list会更好,因为它会在原始列表中循环,并将每个项放在新列表中。你知道吗

我还建议使用break函数,因为一旦找到某些需求,就可以退出循环并继续编写代码。你知道吗

以下是我为您编写的代码:

my_list = [1,2,3,4,5,5]
disposableList = []
for i in my_list:
    disposableList.append(i)
for i in my_list:
    disposableList.remove(i)
    if i in disposableList:
        break

祝你好运!你知道吗

约旦。你知道吗

有没有不想使用内置列表函数list.count(item)的原因?假设您有以下设置:

a = [1,2,3,4,4,5,5,5]
for i in a:
    if a.count(i) > 1:
        print("The list contains a duplicate:", i)

或者更好的方法是,如果要创建没有重复项的列表,请使用内置的set类型:

a = [1,2,3,4,4,5,5,5]
b = set(a)
print(b)

这将输出"{1, 2, 3, 4, 5}"

如注释中所述,如果出于某种原因仍确实要复制列表,请使用b=a.copy()b=a只是从ba的引用(如果两者都是列表)。这就是为什么改变一个事物会改变另一个事物。)

相关问题 更多 >