携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第26天,点击查看活动详情
🍁作者简介:🏅云计算领域优质创作者🏅新星计划第三季python赛道TOP1🏅 阿里云ACE认证高级工程师🏅
✒️个人主页:小鹏linux
💊个人社区:小鹏linux(个人社区)欢迎您的加入!
1.元组
1.1 元组定义:
|
|---|
| Python的元组与列表类似,不同之处在于元组的元素不能修改。元组使用小括号,列表使用方括号。元组和字符串都是不可变序列. |
1.1.1 语法
定义元组语法 ( ) 和 ,
| | |
|---|
| In [1]: a= 1,2,3In [2]: aOut[2]: (1,2,3)In [3]: type(a)Out[3]:tuple | In [4]: b=(1,2,3)In [5]: bOut[6]: (1, 2, 3)In [7]: type(b)Out[7]:tuple | In [8]: a= ()In [9]: type(a)Out[10]: aIn [11]: ( )Out[11]:tuple |
| In [12]: a= (2)In [13]: aOut[13]: 2In [14]: type(a)Out[14]:int | In [15]: a= (2,)In [16]: aOut[16]: (2,)In [17]: type(a)Out[17]:tuple | In [18]: a= 2In [19]: aOut[19]: 2In [20]: a=2,Out[20]: (2,) |
| 可存放的数据类型:数字(整型)、字符串、元组嵌套类型、元组嵌套列表、元组嵌套字典 | | |
1.1.2 访问元组
和列表一样
|
|---|
| In [21]: a= (11,22,33,11,22,11,11)In [22]: a[2]Out[22]: 33In [23]: b.count(11)Out[23]:4In [24]: b.index(33)Out[24]: 2 |
1.1.3 修改元组
|
|---|
| Python 中不允许修改元组的数据,包括不能删除其中的元素。元组是不可变的,也就是说,元组中的元素在被赋值后不能改变。但是,如果元素本身是一个可变数据类型的列表,那么其嵌套项可以被改变 |
In [25]: name= [‘小鹏’,’凉凉’,’卷妹’,’吕布’,’貂蝉’,’黑客’,’魏延’]
In [26]: atuple=tuple(names)
In [27]:atuple
Out[27]: (‘小鹏’,’凉凉’,’卷妹’,’吕布’,’貂蝉’,’黑客’,’魏延’)
In [28]: alist=list(atuple)
In [29]: alist
Out[29]: [‘小鹏’,’凉凉’,’卷妹’,’吕布’,’貂蝉’,’黑客’,’魏延’]
![点击并拖拽以移动]()
1.2 tuple函数
|
|---|
| tuple函数的功能与list函数基本上一样的,以一个序列作为参数并把它转换为元组,如果参数是元组,那么该参数就会被原样返回。 多维列表/元祖访问 a[ ][ ] |
In [30]: chool_names = (('北京大学', '清华大学'),('南开大学', 'CSDN大学'),('贵州大学', '青海大学'))
In [31]: chool_names[1][1]
Out[32]: ‘CSDN大学’
![点击并拖拽以移动]()
1.3 元组的优点
与列表相比,元组的优点:
|
|---|
| 通常将元组用于不同的数据类型,将列表用于相同(或相似)的数据类型。由于元组不可变,所以遍历元组比列表要快(较小的性能提升)。元组可以用作字典的Key,而列表不行。因为字典的Key 必须是不可变的,元组本身就是不可变的。如果数据不需要更改,将其作为元组来实现,可以确保“写保护” |
2. 字典
2.1 字典定义 :键值对( key:value)
|
|---|
| 变量student为字典类型:student= {'name':' 小鹏', 'id':100, 'sex':' 男', 'address':' 中国’} |
2.2 字典访问
|
|---|
| In [2]: student['name']Out[2]: '小鹏' |
| In [3]: student['adress']----------------------------------------------------------------------KeyError Traceback (most recent call last) in ----> 1 student['adress']KeyError: 'adress' |
|
|---|
| 访问不存在的键则会报错,解决方法:get()使用 get(‘key’) 不存在不会报错,而且可以设置默认值 |
In [4]: student.get("address")
![点击并拖拽以移动]()
|
|---|
| 在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值. |
In [5]: student.get("id")
Out[5]: 100
In [6]: student.get("id",19)
Out[6]: 19
![点击并拖拽以移动]()
2.3 字典和列表的区别
|
|---|
| 字典是用键值对的方式存储多个数据,获取元素用key的方式获取,值无特殊顺序列表是通过下标获取,有顺序 |
2.4 字典的增删改查
2.4.1 添加、修改元素
|
|---|
| 字典的每个元素中的数据是可以修改的,只要通过key找到,即可修改 |
student = {"name":"小鹏","id":100,"sex":"男"}
print("修改前的内容:",student)
student["id"] = 30
print("修改之后:",student)
![点击并拖拽以移动]()
|
|---|
| 如果在使用 变量名['键'] = 数据 时,这个“键(key)”在字典中不存在,那么就会新增这个元素 |
student = {"name":"小鹏","id":100,"sex":"男"}
print("增加前的内容:",student)
student["local"] = "北京"
print("增加之后:",student)
![点击并拖拽以移动]()
|
|---|
| 增加前的内容: {'name': '小鹏', 'id': 100, 'sex': '男'}增加之后: {'name': '小鹏', 'id': 100, 'sex': '男', 'local': '北京'} |
2.4.2 删除元素
对字典进行删除操作,有一下几种
| |
|---|
| 1. | del删除指定的元素 |
| student = {"name":"小鹏","id":100,"sex":"男"}del student["id"]print(student) | |
| 2. | del删除整个字典 |
| del studentprint(student) | |
| 3. | clear清空整个字典 |
| student.clear()print(student) | |
| 4. | pop删除字典指定元素并且得到值 |
| result = student.pop("name")print(student)print(result) | |
| 5. | popitem随机返回并删除字典中的一对键和值(项)(字典没有顺序所以是随机,实际是从后往前删) |
| a,b = student.popitem()print(student)print(a,b) | |
2.4.3 查找 元素
| | |
|---|
| info = {"name":"小鹏","id":100,"sex":"男","age":30} | | |
| 1.普通获取数据方式 | | |
| 简写 | print(info["name"]) | print(info.get("name","无名")) |
| 完整 | name = info["name"]print(" 使用[key]=",name) | name = info.get("name")print(" 使用get(key) 查找=",name) |
| 2.通过Key查找数据 #info和info.keys效果是一样的(只不过info隐藏了) | | |
| if "name" in info: print("使用in根据key从字典中查找name是存在的。") | | |
| if "name" in info.keys(): print("使用in根据key从字典中的info.keys()查找name是存在的") | | |
| 3.通过Value获取值 | | |
| if "小鹏" in info.values(): print("使用in根据'值'从字典中查找info.values()小鹏是存在的。") | | |
2.4.4 字典的键值操作
len () 测量字典中,键值对的个数
|
|---|
| In [1]: info = {"name":"小鹏","id":100,"sex":"男","age":30}In [2]: len(info)Out[2]: 4 |
keys 返回一个包含字典所有 KEY 的列表
values 返回一个包含字典所有 value 的列表
|
|---|
| In [4]: info.values()Out[4]: dict_values(['小鹏', 100, '男', 30]) |
items 返回可遍历的( ( 键 , 值 ) 元组数组
|
|---|
| In [5]: info.items()Out[5]: dict_items([('name', '小鹏'), ('id', 100), ('sex', '男'), ('age', 30)]) |
has_key Python3中废弃了,这个方法是python 2.6以后支持的,
但在python 3.0版本开始将使用in. dict.has_key(key)如果key在字典中,返回True,否则返回False
2.4.5 字典 遍历
通过for ... in ...:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。
| | |
|---|
| 字符串遍历 | 列表遍历 | 元组遍历 |
| a_str = "hello atguigu"for a in a_str:print(a) | a_list = [" 刘备", 2, [" 曹操"," 曹丕"], "孙权", 5]for a in a_list:print(a,end=" ")print("") | a_tuple = (" 曹操", " 刘备", 3, 4, 5)for a in a_tuple:print(a,end=" ")print("") |
| 遍历字典的key(键) | | |
| name = {"name":"小鹏","id":100,"sex":"男","age":30}for key in name.keys(): print(key) | | |
遍历字典的value(值)
|
|---|
| for value in name.values(): print(value) |
遍历字典的items项(元素)
|
|---|
| for ite in name.items(): print(ite) |
| 遍历字典的key-value(键值对) |
| for key,value in name.items(): print(key,value) |
2.4.6 遍历列表引入
如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
|
|---|
| names = [" 小鹏"," 几何心凉"," 貂蝉"]for i in range(len(names)):print("%d %s "% (i,names[i])) |
上述方法有些累赘,利用枚举遍历 enumerate() 会更加直接和优美:
|
|---|
| names = [" 小鹏"," 几何心凉"," 貂蝉"]for index,value in enumerate(names):print("%d %s " % (index,value)) |
enumerate还可以接收第二个参数,用于指定索引起始值,如:
|
|---|
| names = [" 小鹏"," 几何心凉"," 貂蝉"]for index,value in enumerate(names,2): #2从第几个开始print("%d %s " % (index,value)) |
enumerate() 遍历字典:
|
|---|
| infos = {'name':' 小鹏', 'id':100, 'sex':' 男生', 'address':' 中国北京'}for index,value in enumerate(infos):print("%d %s " % (index,value)) |
enumerate() 遍历值:
|
|---|
| infos = {'name':' 小鹏', 'id':100, 'sex':' 男生', 'address':' 中国北京'}for index,value in enumerate(infos.values()):print("%d %s " % (index,value)) |
👑👑👑结束语👑👑👑
