Python-拷贝,字典

深浅拷贝:

浅拷贝:

    拷贝到最外层:直接赋值、切片赋值

>>> list_1 = [1,2,3,4]
>>> list_2 = list_1
>>> list_2
[1, 2, 3, 4]
>>> list_1[1] = 'a'
>>> list_1
[1, 'a', 3, 4]
>>> list_2
[1, 'a', 3, 4]
>>> list_3 = [1,2,3,['a','b']]
>>> list_4 = list_3[:]
>>> list_4
[1, 2, 3, ['a', 'b']]
>>> list_3[0] = 'c'
>>> list_3
['c', 2, 3, ['a', 'b']]
>>> list_4
[1, 2, 3, ['a', 'b']]
>>> list_3[3][1] = 'ww'
>>> list_3
['c', 2, 3, ['a', 'ww']]
>>> list_4
[1, 2, 3, ['a', 'ww']]

深拷贝:

    由外到内全部拷贝

>>> import copy
>>> list_5 = copy.deepcopy(list_3)
>>> list_5
['c', 2, 3, ['a', 'ww']]
>>> list_5[3][0] = 99
>>> list_3
['c', 2, 3, ['a', 'ww']]
>>> list_5
['c', 2, 3, [99, 'ww']]
字典:

  1. 字典以键值对形式存在:{key:value}
  2. key值会进行hash运算,生成hash表,所以字典的访问效率要优于普通序列数据类型(列表,元组)
  3. key值由于需要通过hash,所以一些可变的数据类型不可以做key值,而value值没有限制,可以是任意数据类型
  4. 由于进行了hash运算,所以字典在内存中的存储是无序的,不能进行索引和切片之类的有序操作
  5. 字典是可变的数据类型
创建方式:

  1. 大括号包裹键值对:
>>> mydict = {1:'a',2:'b'}
>>> mydict
{1: 'a', 2: 'b'}
>>> mydict[1]
'a'

    2.工厂方法创建:

>>> mydict_1 = dict(([1,'a'],[2,'b']))
>>> mydict_1[1]
'a'
>>> mydict_1
{1: 'a', 2: 'b'}

    3.字典内建方式,这是批量创建key值,但是不能单独分配value值

>>> mydict_2 = dict.fromkeys([1,2,3,4,5],'a')
>>> mydict_2
{1: 'a', 2: 'a', 3: 'a', 4: 'a', 5: 'a'}

访问字典:

    获得所有的key值:dict.keys()

>>> mydict_2.keys()
dict_keys([1, 2, 3, 4, 5])

    获得所有的value值:dict.values()

>>> mydict_2.values()
dict_values(['a', 'a', 'a', 'a', 'a'])

    通过key值获取value:dict[key]

>>> mydict_2[2]
'a'

    迭代获取其中的key值或value值

>>> for var in mydict_2.keys():
...     print(var)
...
1
2
3
4
5
>>>
>>> for var in mydict_2:
...     print(var)
...
1
2
3
4
5
>>> for var in mydict_2.values():
...     print(var)
...
a
a
a
a
a
>>> for var in mydict_2:
...     print(mydict_2[var])
...
a
a
a
a
a

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值