当前位置:  开发笔记 > 编程语言 > 正文

python中的一个集合的分区

如何解决《python中的一个集合的分区》经验,为你挑选了1个好方法。



1> Willem Van O..:

从列表中删除元素的问题是它需要O(n):它采用列表中元素数量的顺序来删除该项目.

你最好使用sets或甚至更好的a bitarray在O(1)中工作.

例如:

m = 50 #the number of apples
b = 10 #the number of buckets
fls = [False]*m
a = [bitarray(fls) for _ in range(b)]
a[0] = bitarray([True]*m) #add a filled bucket at index 0

def move_apple(apple_id,from_bucket,to_bucket):
    a[from_bucket][apple_id] = False
    a[to_bucket][apple_id] = True


`[范围(m)中的_为假]`是过度的.对于不可变对象,你可以做`[False]*m`.使用`bitarray`是一个非常好的主意.
推荐阅读
雯颜哥_135
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有