Python基础-Day04 元组 & 字典 & 集合

本文详细介绍了Python中元组、字典和集合的基本操作,包括创建、访问、修改和删除元素,以及各种相关操作如排序、合并、查找等。元组不可变,适合存储有序数据;字典是无序可变序列,提供快速查找功能;集合也是无序可变,用于不重复元素的存储。这些数据结构在Python编程中广泛应用。
摘要由CSDN通过智能技术生成

目录

1. 元组

1.1 元组的创建

1.1.1 通过()创建

1.1.2 tuple()

1.1.3 生成器推导式创建元组

1.1.4 zip()

1.2 访问元组元素

1.2.1 通过 [] 访问

1.2.2 排序

2. 字典

2.1 简介

2.2 字典的创建

2.2.1 通过 {} 创建字典对象

2.2.2 dict()

2.2.3 zip()

2.2.4 fromkeys 创建值为空的字典

2.3 访问字典元素

2.3.1 通过 [键] 获得“值”

2.3.2 get()

2.3.3 items()

2.3.4 keys()、values()

2.3.5 in

2.3 添加字典元素

2.3.1 新增“键值对”

2.3.2 update()

2.4 删除字典元素

2.5 序列解包

3. 集合

3.1 集合的创建和增删

3.1.1 使用 {} 创建集合对象,并使用 add() 添加元素

3.1.2 set()

3.1.3 remove()   clear()

3.2 集合相关操作

3.2.1 并集

3.2.2 交集

3.2.3 差集


1. 元组

1.1 元组的创建

1.1.1 通过()创建

注:小括号可以省略。若元组只有一个元素,则必须后面加逗号,如 (1,)。

1.1.2 tuple()

tuple()可以接收列表、字符串、其他序列类型、迭代器等生成元组。如:

a = tuple("abc")  ==>  a = ('a','b','c')
b = tuple(range(3)) ==> b = (0, 1, 2) 
c = tuple([2,3,4]) ==> c = (2, 3, 4)

1.1.3 生成器推导式创建元组

生成器推导式生成的不是列表也不是元组,而是一个生成器对象,但可以转化成列表或者元组。

注:生成器对象的元素访问结束后,如果需要重新访问其中的元素,必须重新创建该生成器对象。

>>> s = (x*2 for x in range(5))
>>> tuple(s)
(0, 2, 4, 6, 8)
>>> list(s)
[]

1.1.4 zip()

zip(列表1,列表2,...) 将多个列表对应位置的元素组合成为元组,并返回这个zip 对象。

>>> a = [10,20,30]
>>> b = [40,50,60]
>>> c = [70,80,90]
>>> d = zip(a,b,c)
>>> tuple(d)
((10, 40, 70), (20, 50, 80), (30, 60, 90))

1.2 访问元组元素

1.2.1 通过 [] 访问

注:元组的元素不能修改。

元组的切片操作与列表类似,只不过返回的仍然是元组对象。

1.2.2 排序

只能使用内置函数 sorted(tupleObj) 对元组排序,并生成新的列表对象。

2. 字典

2.1 简介

1. 字典是“键值对”的无序可变序列,字典中的每个元素都是一个“键值对”,包含:“键对象”和“值对象”。可以通过“键对象”实现快速获取、删除、更新对应的“值对象”。

2. “键”是任意的不可变数据,如:整数、浮点数、字符串、元组。但列表、字典、集合等可变对象,不能作为“键”。

3. “键”不可重复

4. “值”可以是任意的数据,并且可重复。

2.2 字典的创建

2.2.1 通过 {} 创建字典对象

如:a = {'name':'老白' , 'age':26 , 'job':'waiter'}

2.2.2 dict()

>>> b = dict(name='老白', age=26 , job='waiter')
>>> c = dict([("name","秀才"),("age",25)])
>>> c
{'name': '秀才', 'age': 25}

2.2.3 zip()

>>> k = ['name','age','job']
>>> v = ['大嘴',25,'cook']
>>> d = dict(zip(k,v))
>>> d
{'name': '大嘴', 'age': 25, 'job': 'cook'}

2.2.4 fromkeys 创建值为空的字典

>>> a = dict.fromkeys(['name','age','job'])
>>> a
{'name': None, 'age': None, 'job': None}

2.3 访问字典元素

2.3.1 通过 [键] 获得“值”

>>> a = {'name':'老白' , 'age':26 , 'job':'waiter'}
>>> a['name']
'老白'
>>> a['gender']
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'gender'

2.3.2 get()

优点:指定键不存在,返回None;指定键不存在时,可以设定默认返回的对象。

>>> a = {'name':'老白' , 'age':26 , 'job':'waiter'}
>>> a.get('name')
'老白'
>>> a.get('gender','male')
'male'

2.3.3 items()

列出所有的键值对。

>>> a = {'name':'老白' , 'age':26 , 'job':'waiter'}
>>> a.items()
dict_items([('name', '老白'), ('age', 26), ('job', 'waiter')])

2.3.4 keys()、values()

列出所有的键、值。

>>> a = {'name':'老白' , 'age':26 , 'job':'waiter'}
>>> a.keys()
dict_keys(['name', 'age', 'job'])
>>> a.values()
dict_values(['老白', 26, 'waiter'])

2.3.5 in

检测一个“键”是否在字典中。

2.3 添加字典元素

2.3.1 新增“键值对”

如果“键”已经存在,则覆盖旧的键值对;如果“键”不存在,则新增“键值对”。

>>>a = {'name':'老白','age':26,'job':'waiter'}
>>> a['address']='七侠镇'
>>> a['age']=26
>>> a
{'name': '老白', 'age': 26, 'job': 'waiter', 'address': '七侠镇'}

2.3.2 update()

将新字典中所有键值对全部添加到旧字典对象上,若key 已存在,则直接覆盖。

>>> a = {'name':'老白','age':26,'job':'waiter'}
>>> b = {'name':'秀才','salary':1000,'gender':'male'}
>>> a.update(b)
>>> a
{'name': '秀才', 'age': 26, 'job': 'waiter', 'salary': 1000, 'gender': 'male'}

2.4 删除字典元素

del:如 del a['name'] 或 del(a['name'])。

clear():删除所有键值对。

pop():删除指定键值对,并返回对应的“值对象”:如 b = a.pop('age') ==> b = 26。

popitem() ::随机删除和返回该键值对。字典是“无序可变序列”,popitem 弹出随机的项,若需一个接一个地移除并处理项,该方法非常有效。

2.5 序列解包

序列解包可用于元组、列表、字典,实现对多个变量赋值

>>> x,y,z=(20,30,10)
>>> x
20
>>> y
30
>>> z
10
>>> (a,b,c)=(9,8,10)
>>> a
9
>>> [a,b,c]=[10,20,30]
>>> a
10
>>> b
20

注:序列解包用于字典时,默认是对“”进行操作; 如果需要对键值对操作,则需要使用 items();如果需要对“”进行操作,则需要使用 values()

>>> s = {'name':'老白' , 'age':26 , 'job':'waiter'}
>>> name,age,job=s    #默认对键进行操作
>>> name
'name'
>>> name,age,job=s.items()    #对键值对进行操作
>>> name
('name', '老白')
>>> name,age,job=s.values()    #对值进行操作
>>> name
'老白'

3. 集合

集合无序可变,元素不能重复。集合底层由字典实现,集合的所有元素都是字典中的“键对象”,因此是不能重复且唯一的。

3.1 集合的创建和增删

3.1.1 使用 {} 创建集合对象,并使用 add() 添加元素

>>> a = {3,5,7}
>>> a
{3, 5, 7}
>>> a.add(9)
>>> a
{9, 3, 5, 7}

3.1.2 set()

将列表、元组等可迭代对象转成集合,若存在重复数据,则只保留一个。

>>> a = ['a','b','c','b']
>>> b = set(a)
>>> b
{'b', 'a', 'c'}

3.1.3 remove()   clear()

remove()删除指定元素;clear()清空整个集合。

>>> a = {10,20,30,40,50}
>>> a.remove(20)
>>> a
{10, 50, 30}

3.2 集合相关操作

a = {1,3,'zzz'}

b = {'he','it',zzz'}

3.2.1 并集

a|b 或 a.union(b)   ==>  {1, 3, 'zzz, 'he', 'it'}

3.2.2 交集

a&b 或 a.intersection(b) ==> {'zzz'}

3.2.3 差集

a-b 或 a.difference(b) ==> {1, 3}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值