我刚刚发现Python字典和集合都有def edit(item_list):
pos = int(input("Number: "))
new_value = input("Updated name: ")
item_list[pos-1] = new_value
print"%s was updated" % (new_value)
方法。该方法实际上只是从对象中删除所有条目。
有没有充分的理由,甚至情况,有必要拨打clear
而不是foo.clear()
或foo = {}
?
我可以想象它可能更有效地用于垃圾收集,但它似乎违反了#34; 应该有一个 - 最好只有一个 - 显而易见的方法。& #34;
答案 0 :(得分:4)
可能有对此对象的其他引用。如果用新对象替换引用,其他引用仍将指向原始字典/集。
答案 1 :(得分:3)
当您对同一个设置对象有多个引用时,只有clear()
可以清空该组而无需重新分配。
比较
>>> def clear(s):
... s.clear()
...
>>> def clear_assignment(s):
... s = set()
...
>>> foo = {'bar', 'baz'}
>>> clear_assignment(foo)
>>> foo
{'baz', 'bar'}
>>> clear(foo)
>>> foo
set()
分配将一个名称重新绑定到新的set()
对象,而set.clear()
从可变对象中删除所有内容而不重新分配,因此您可以继续使用其他引用那套。
答案 2 :(得分:0)
foo = {}不会删除对象,只是将foo引用到一个新的空对象(如果其他变量仍然引用它,旧的仍然存在)。
因此,foo.clear()具有内存效率,这是最好的方法。