首页 > 解决方案 > 使用列表理解的输出不同于使用 for 循环的输出

问题描述

我最近才开始学习 Python,并且没有编码经验。我正在尝试编写代码,给定一个数字列表,返回另一个(有序)数字列表,而第一个列表中没有任何重复项。

以下代码似乎有效:

nums = [2, 2, 1, 3]
r = []
for i in nums:
    if i not in r:
        r.append(i)
print(sorted(r))

输出是:

[1, 2, 3]

然后我尝试使用列表理解进行相同的操作,但显然有问题。这是我尝试过的:

nums = [2, 2, 1, 3]
r = []
r = sorted([i for i in nums if i not in r])
print(r)

这是输出:

[1, 2, 2, 3]

我做错什么了?

标签: pythonpython-3.xfor-looplist-comprehension

解决方案


首先,r不会在您的列表理解 ( [i for i in nums if i not in r]) 中更新,因此每次检查您的条件时它都会为空。

此外,要使用数字对唯一列表进行排序,请使用 set 如下: sorted(set(nums))


推荐阅读