a2 = list(a) #a is a list
b2 = set(b) #b is a set
c2 = dict(c) #c is a dict
d2 = frozenset(d) #d is a frozenset
e2 = str(e) #e is a string
#All of the above give a (shallow) copy.
所以,如果x是其中一种类型,那么
shallow_copy_of_x = type(x)(x) #Highly unreadable! But economical.
这两个选项都会给出一个集合的副本:
或:
上面第一种方法没有给出一组集合的原因是,正确的语法应该是
set([old_set])
。这不起作用,因为set
s不能是其他set
s中的元素,因为它们是不可更改的。然而,这对于frozenset
s来说是不正确的,例如frozenset(frozenset(frozenset([1,2,3]))) == frozenset([1, 2, 3])
。因此,复制Python中基本数据结构的任何实例(list、dict、set、frozenset、string)的经验法则是:
所以,如果
x
是其中一种类型,那么注意,只有
dict
、set
和frozenset
具有内置的copy()
方法。为了统一性和可读性,列表和字符串也有一个copy()
方法可能是个好主意。但它们没有,至少在我正在测试的Python2.7.3中没有。除了
type(x)(x)
黑客之外,您还可以导入copy
模块来进行浅拷贝或深拷贝:从docstring:
相关问题 更多 >
编程相关推荐