Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用列表理解的输出与使用for循环的输出不同_Python_Python 3.x_For Loop_List Comprehension - Fatal编程技术网

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

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]

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

我做错了什么?

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

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

r
在列表理解中不会得到更新-在完成排序并将结果分配给
r
之前,它将保持在
[]
。这是否回答了您的问题?我真的不知道为什么这个问题被否决,并关闭为“不适合这个网站”。这是一个完全正确的问题,尽管已经有人问过了。@stovfl你能插话说明你为什么投票结束这个问题吗?请记住这是OP的第一篇帖子。@wjandrea,它确实回答了这个问题,非常感谢!