【问题标题】:Output using list comprehension different from output using for loop [closed]使用列表理解的输出不同于使用 for 循环的输出[关闭]
【发布时间】:2020-11-20 13:35:53
【问题描述】:

我最近才开始学习 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 不会在列表理解中得到更新 - 它保持在 [] 直到排序完成并将结果分配给 r
  • 我真的不知道为什么这个问题被否决并关闭为“不适合这个网站”。这是一个完全有效的问题,尽管它已经被问过了。
  • @stovfl 你能谈谈你为什么投票结束这个问题吗?请记住,这是 OP 的第一篇文章。
  • @wjandrea,它确实回答了,非常感谢!

标签: python python-3.x for-loop list-comprehension


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-08
    • 1970-01-01
    相关资源
    最近更新 更多