Python学习笔记__1.6章 使用dict和set

本文介绍了Python中的不可变对象与可变对象的区别,详细探讨了字典(dict)与集合(set)的使用方法及其特点,包括增删查改操作及与其他数据类型的对比。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是学习廖雪峰老师python教程的学习笔记

1、不可变对象和可变对象

  •  不可变对象

该对象所指向的内存中的值不能被改变。当改变某个变量时候,由于其所指的值不能被改变,相当于把原来的值复制一份后再改变,这会开辟一个新的地址,变量再指向这个新的地址。

  •  可变对象

该对象所指向的内存中的值可以被改变。变量(准确的说是引用)改变后,实际上是其所指的值直接发生改变,并没有发生复制行为,也没有开辟新的出地址,通俗点说就是原地改变。

 

Python中,数值类型(int和float)、字符串str、元组tuple都是不可变类型。而列表list、字典dict、集合set是可变类型

 

2dict

2.1、dict概览

dict,字典,全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度

>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85}  # 定义了一个字典,注意使用的是 {}

>>> d['Michael']

95

把数据放入dict的方法,除了初始化时指定外,还可以通过key放入

注:由于一个key只能对应一个value,所以,多次对一个key放入value,后面的值会把前面的值冲掉

>>>d['Adam'] = 67

>>> d['Adam']

67

如果key不存在,dict就会报错:

>>> d['Thomas']

Traceback (most recent call last):

  File "<stdin>", line 1, in< module>

KeyError: 'Thomas'

判断key是否存在的两种方法:

  1、通过in判断

>>> 'Thomas' in d

False

  、2通过dict提供的get()方法,如果key不存在,

可以返回None(返回None的时候Python的交互环境不显示结果),或者自己指定的value

>>> d.get('Thomas')

>>> d.get('Thomas', -1)

-1

要删除一个key,用pop(key)方法,对应的value也会从dict中删除:

>>> d.pop('Bob')

75

>>> d

{'Michael': 95, 'Tracy': 85}

 

注意:dict内部存放的顺序和key放入的顺序是没有关系的

 

2.2、dict和list的区别

 dict

查找和插入的速度极快,不会随着key的增加而变慢;

需要占用大量的内存,内存浪费多。

 list

查找和插入的时间随着元素的增加而增加;

占用空间小,浪费内存很少。

 

dict是用空间来换取时间的一种方法,dict的key必须是不可变对象

 

3set

set和dict类似,也是一组key的集合,但不存储value。set中没有重复的key,set的key也必须是不可变对象

 

创建一个set,需要提供一个list作为输入集合重复元素在set中会被自动被过滤

>>>s = set([1, 2, 3])

>>> s

{1, 2, 3}

注意:传入的参数[1, 2, 3]是一个list,而显示的{1, 2, 3}只是告诉你这个set内部有1,2,3这3个元素,显示的顺序也不表示set是有序的。

 

add(key)方法可以添加元素到set中

>>> s.add(4)

>>> s

{1, 2, 3, 4}

 

remove(key)方法可以删除元素

>>> s.remove(4)

>>> s

{1, 2, 3}

 

set可以看成数学意义上的无序和无重复元素的集合,因此,两个set可以做数学意义上的交集、并集等操作

>>>s1 = set([1, 2, 3])

>>>s2 = set([2, 3, 4])

>>>s1 & s2

{2, 3}

>>>s1 | s2

{1, 2, 3, 4}

 

3、参考文档

python中的可变对象和不可变对象 (https://www.cnblogs.com/sun-haiyu/p/7096918.html)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值