Python 使用列表理解的输出与使用for循环的输出不同
我最近才开始学习Python,没有编码经验。我试图编写一段代码,给定一个数字列表,返回另一个(有序的)数字列表,第一个列表中没有任何重复项 以下代码似乎有效:Python 使用列表理解的输出与使用for循环的输出不同,python,python-3.x,for-loop,list-comprehension,Python,Python 3.x,For Loop,List Comprehension,我最近才开始学习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]
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]
我做错了什么?首先,
r
不会在您的列表理解中更新([I for I in nums if I not in r]
),因此每次检查您的状态时,列表都将为空
此外,要使用数字对唯一列表进行排序,请使用如下集合:
sorted(set(nums))
r
在列表理解中不会得到更新-在完成排序并将结果分配给r
之前,它将保持在[]
。这是否回答了您的问题?我真的不知道为什么这个问题被否决,并关闭为“不适合这个网站”。这是一个完全正确的问题,尽管已经有人问过了。@stovfl你能插话说明你为什么投票结束这个问题吗?请记住这是OP的第一篇帖子。@wjandrea,它确实回答了这个问题,非常感谢!