从列表中删除元素的问题是它需要O(n):它采用列表中元素数量的顺序来删除该项目.
你最好使用set
s或甚至更好的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