繁体   English   中英

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

[英]Is set() faster than list(), python?

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

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 的集合类表示集合的数学概念,即元素的集合,没有重复,并且这些元素没有固有的顺序。 与列表相反,使用集合的主要优点是它具有高度优化的方法来检查特定元素是否包含在集合中。 这是基于称为哈希表的数据结构

然而,由于算法基础,有两个重要的限制。 第一个是集合不以任何特定顺序维护元素。 第二个是只能将不可变类型的实例添加到 Python 集中。 因此,整数、浮点数和字符串等对象都可以作为集合的元素。 可以维护一组元组,但不能维护一组列表或一组集合,因为列表和集合是可变的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM