python中数组是集合吗_Python集合与数组

我需要在内存中存储一大串数字。然后我需要检查会员资格。数组在内存效率方面优于列表。集合比列表更适合成员资格检查。我两者都需要!所以我的问题是:

数组的效率比1)多多少?(相反,请参阅下面的结果)。

2) 有没有一种数据结构可以更好地平衡集合和数组?像是有符号整数类型的集合?或者一些裸体建筑?在

我用下面的脚本检查了成员时间的差异。(我知道时间比较好,但方差很小,足以让时间过得很好):import array

import time

class TimerContext:

def __enter__(self):

self.t0 = time.time()

def __exit__(self, *args, **kwargs):

print(time.time()-self.t0)

SIZE = 1000000

l = list([i for i in range(SIZE)])

a = array.array('I', l)

s = set(l)

print(type(l))

print(type(a))

print(type(s))

with TimerContext():

x = 99999 in l

with TimerContext():

x = 99999 in a

with TimerContext():

x = 99999 in s

结果:

^{pr2}$

所以集合对于成员资格检查要快得多(请注意科学的符号)。因此,如果它们的内存占用与数组没有那么大的不同,我更喜欢使用set。但我不知道如何检查内存占用。在

我还要补充一点,比较集合和列表有很多问题。但是在比较数组和集合时,我没有看到任何好的答案。在

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值