转载自 http://www.pythondoeswhat.com/2018/03/the-zen-of-empty-lists.html
假如有个 list 叫做 bucket
,将其清空的方法有:
1
infun 2018-03-23 09:54:12 +08:00 via Android 5
Python 的哲学是啥来着
|
2
scriptB0y OP @infun "There should be one-- and preferably only one --obvious way to do it". >_<
|
3
th00000 2018-03-23 09:57:33 +08:00
最近看到了阿里云的 redis 开发规范好像有提到这么一嘴
使用 hscan、sscan、zscan 方式渐进式删除,同时要注意防止 bigkey 过期时间自动删除问题 效率影响很大 |
4
yangg 2018-03-23 10:58:31 +08:00
现在的标题只夸张 10 倍了?
|
5
marcong95 2018-03-23 11:08:06 +08:00
@yangg 方法 7 后面*=任意负整数都可以清空,这么看来是有 2^31 - 1 种方法,加上 lz 说的另外 7 种,那一共是有 2^31 + 6 种了,那就变成夸小了。。
|
7
msg7086 2018-03-23 11:29:00 +08:00
那么喜欢把玩,为什么不去玩 Ruby 呢。
|
8
shuizhengqi 2018-03-23 11:42:59 +08:00
搞不懂你要干什么,直接 list=[]不好用?
|
9
suhaocong 2018-03-23 11:45:39 +08:00
同上 list=[]
|
10
sleshep 2018-03-23 12:45:10 +08:00
clear ()
和 =[] 的副作用不一样的 |
11
LokiSharp 2018-03-23 13:15:39 +08:00
list=[] 会创建一个新的对象
|
12
ipwx 2018-03-23 13:18:21 +08:00 via iPhone
@shuizhengqi 复用旧 list 的缓冲空间,常数级优化。
|
13
zbl430 2018-03-23 15:14:01 +08:00
clear() python3....
|
14
est 2018-03-23 15:24:20 +08:00 1
其实还好。一共就 4 种方法:
1. 全部赋一个新的值。 = [] *= 都一样。老的没了被 GC 了 2. .clear() 3. del 4. [:] = 赋值。 我觉得 用 第二种最好。因为可以实现批量删除。但是似乎 py2 里不支持。 |
15
Icezers 2018-03-23 16:41:34 +08:00
Exception in thread "read v2ex" java.lang.ArrayIndexOutOfBoundsException: 0
|