【发布时间】:2023-02-13 23:53:37
【问题描述】:
我选择了一个稍微不同的程序来删除列表的重复项。我想并行保留一个新列表,其中添加了每个重复项。然后我检查该元素是否存在于“新创建的列表”中以便删除它。
代码如下所示:
# nums = [1,1,2] or [0,0,1,1,1,2,2,3,3,4]
t = []
nums_new = nums
for i in nums:
if nums[i] not in t:
t.append(nums[i])
else:
nums_new.remove(nums[i])
nums = nums_new
print(nums)
对于 nums = [1,1,2] 的情况,这工作正常并返回 [1,2]。
但是,对于 nums = [0,0,1,1,1,2,2,3,3,4],这种情况似乎不起作用,因为我得到以下输出:[0, 1, 2, 2, 3, 3, 4]。
为什么是这样?有人可以向我解释这些步骤吗?
【问题讨论】:
-
for i in nums使i成为nums的元素,而不是索引。所以你应该使用i而不是nums[i] -
@SembeiNorimaki 如果我这样做,我仍然会以某种方式得到不正确的列表...
-
请使用更新的代码、您正在使用的输入列表和您得到的结果编辑您的问题
-
有没有动机不做
nums = list(set(nums))?请注意,在迭代时从列表中删除元素充满了危险。 -
如果你没有选择所有元素都是有效索引的测试用例,例如
nums = ['1', '1', '2']...(你想做的不只是给你留下两个相同的列表吗?)
标签: python