在python中从函数返回值时出现问题

2024-10-03 23:18:41 发布

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

我下面的代码显示为TRUE,尽管没有重复的代码。不幸的是,我受到的限制不允许我更改主函数。有人能帮助我理解如何确保我的函数返回到主函数吗?我在其他地方遇到了这个问题,因此我们将非常感谢答案背后的推理

ONE_TEN =[12, 20, 10, 14, 54, 16, 75, 38, 79, 103] #this is test run 2


#j.   Demonstrate testing if the list contains duplicates.
    print("The list has duplicates: ", hasDuplicate(ONE_TEN))

def hasDuplicate(data:list)->bool:
    '''Return true if the list contains duplicate elements 
    (which need not be adjacent)'''
    unique = set(data)
    unique = list(unique)
    fact = unique != data
    return(fact)

if __name__ == "__main__":
    main() ```

Tags: the函数代码truedataifmainone
1条回答
网友
1楼 · 发布于 2024-10-03 23:18:41

你没有做正确的比较。简单的调试显示了问题:只需打印两个列表:

unique = set(data)
unique = list(unique)
print(unique, '\n', data)

输出:

[38, 103, 10, 75, 12, 14, 79, 16, 20, 54]
[12, 20, 10, 14, 54, 16, 75, 38, 79, 103]

相反,比较长度:整个函数可以简单地

return len(data) != len(set(data))

集合是元素的集合;Python将以它认为方便的任何顺序存储元素。因此,当您将列表转换为集合时,顺序可能会改变。集合的定义没有顺序,但Python定义了迭代器,因此可以循环遍历元素

当您从一个集合中创建一个列表时,您可以得到Python喜欢使用的任何顺序,通常是使用的哈希函数产生的一些显然毫无意义的排列。当您从一个集合创建一个列表时,Python只是在集合中迭代,因此您可以在列表中获得基于集合的顺序。没有理由期望此顺序与元素的来源相关

相关问题 更多 >