set()比list()更快,python吗?

问题描述 投票:1回答:1

假设我有一个包含空格分隔的整数的输入,这些整数是唯一的,即一个不会出现两次。在这种情况下,将使用以下内容,

setA = set(input().split())

比使用下面的更快?如果是这样(我实际上是通过这种方式体验过的),为什么呢?

listA = list(input().split())

[在读取输入内容时,请不要专注于没有转换为int的事实。

在我正在处理的问题中,使用list()会给出超时,但是通过使用set(),我可以在时间限制内运行它。 我不知道为什么会这样吗?

编辑:如果可能相关,则相关代码,

arr = input().split()

for ele in arr:

    if ele in setA:
        happiness += 1
    elif ele in setB:
        happiness += -1
    else:
        pass

[arr是由空格分隔的整数行,这次没有唯一性。

python list set
1个回答
0
投票

Python的集合类代表集合的数学概念,即集合元素,没有重复,也没有这些元素的固有顺序。与列表相比,使用集合的主要优点是它具有很高的一种用于检查集合中是否包含特定元素的优化方法。这基于称为哈希表的数据结构]

但是,由于算法基础。首先是集合不维护元素以任何特定顺序排列。第二个是只有不可变类型的实例可以已添加到Python集。因此,诸如整数,浮点数,和字符串有资格成为集合的元素。可以维持元组的集合,但不是列表的集合或集合的集合,因为列表和集合是可变的。

© www.soinside.com 2019 - 2024. All rights reserved.