python - 这有效,但为什么?

标签 python

我在 codecademy 上学习 Python 并遇到了这个解决方案,该功能旨在从数字列表中删除重复项:

x = [1, 1, 2, 2]

def remove_duplicates(x):
    p = []
    for i in x:
       if i != i:
           p.append(i)
    return i

我在 pycharm 中使用一些 print 语句运行它,得到一个空列表。我只是好奇,因为当我在脑海中这样做时,它没有任何意义,但 codecademy 接受这个作为答案。难道只是侥幸?或者这是我还不明白的水平?

最佳答案

你是对的:它没有任何意义。首先,它创建一个名为 p 的列表,该列表获取不等于自身的每个项目。据我所知,唯一不等于自身的对象是 NaN,但您没有这些,所以 p 只是一个空列表。然而,定义 p 是没有用的,因为它甚至没有被返回。返回的是i,它被赋值给最后的每一项,所以它是函数结束时列表中的最后一项。简而言之,该函数等同于:

def remove_duplicates(x):
    return x[-1]

我还没有听说该函数应该返回什么,但也许它应该返回非重复项目的数量。如果是,它“起作用”只是因为列表中的最后一项恰好是非重复项的数量。

关于python - 这有效,但为什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38987146/

相关文章:

python - 将 .data 文件转换为 .csv

python - 希伯来语和英语字符串之间的分隔

python - 通过添加列创建 pandas 数据框

python - 如何从 Delaunay 制作 NetworkX 图并保留输入节点的属性?

python - InvalidArgumentError : logits and labels must be same size logits_size=[80, 2] labels_size=[1,80]

python - boto3 使用 AWS Lambda 启动/停止 RDS 实例

python - 如何从长表中有效地创建 SparseDataFrame?

python - 从类定义中获取类的名称

python - 如何在 Keras 中获取图层的权重?

python - Pyqt 高亮表行