使用列表理解的输出与使用for循环的输出不同

2024-03-29 02:24:40 发布

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

我最近才开始学习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]

我做错了什么


1条回答
网友
1楼 · 发布于 2024-03-29 02:24:40

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

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

相关问题 更多 >