Python:元组和字典简述
目录
- 1.列表的方法
- 2. for循环遍历列表
- 2.1 语法
- 2.2 range()函数
- 3. 元组
- 3.1 元组的基本概念
- 3.2 元组的创建
- 3.3 元组的解包
- 3.3.1 *号在解包中的用法
- 4.字典
- 4.1 字典的基本概念
- 4.2 字典的使用
- 4.2.1 字典的创建
- 4.2.2 通过Key获取值
- 4.2.3 字典的通用方法
- 4.2.4 浅复制
1.列表的方法
列表主要有以下方法:
- append() 向列表的最后来添加一个元素
- insert() 参数1.插入的位置 2.插入的函数
- extend()使用新的序列来扩展当前的序列
- clear() 清空序列
- pop() 根据索引来删除,并且可以返回被删除的值
- remove()删除指定值的元素,remove没有返回值
- reverse() 翻转列表
- sort()队列表中的元素进行排序,默认是升序,如果是降序要传入参数 reverse = True
请参考下列代码每个方法的用法:
lst = [1,2,3,4,5]
lst.append(6)
print(lst)
lst.insert(6,7)
print(lst)
lst.extend([8,9])
print(lst)
lst.remove(2)
print(lst)
lst.pop(0)
print(lst)
lst.reverse()
print(lst)
lst.sort()
print(lst)
lst.clear()
print(lst)
下面是调用每一个方法之后的结果:
[1, 2, 3, 4, 5, 6]
[1, 2, 3, 4, 5, 6, 7]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 3, 4, 5, 6, 7, 8, 9]
[3, 4, 5, 6, 7, 8, 9]
[9, 8, 7, 6, 5, 4, 3]
[3, 4, 5, 6, 7, 8, 9]
[]
2. for循环遍历列表
2.1 语法
for 变量 in 序列(遍历的规则):
代码块
lst = [1,2,3,4,5,6]
for i in lst:print(i)
这个代码的执行结果就是:
1
2
3
4
5
6
由此可见,这里for循环就是将lst列表中的元素赋值给了i, 对每个元素分别赋值一次,通过这个方法,我们就可以把lst列表中的每个元素抓取出来。
2.2 range()函数
range()函数的作业可以用来生成一个自然序。range()函数语法:range(start, stop, step)。其中:
- start: 计数从 start 开始。默认是从 0 开始。例如range(5)等价于 range(0, 5)
- stop: 计数到 stop 结束,但不包括 stop,和列表一样。。例如:range(0, 5) 是[0, 1, 2, 3, 4],没有5
- step:步长,默认为1。例如:range(0, 5) 等价于 range(0, 5, 1)
range()函数经常和for循环一起使用,可以方便我们直接拿出想要的数据。比如2.1当中的列子通过range()函数来实现,就不需要定义一个列表lst:
for i in range(1,7):print(i)
这个代码的执行结果和2.1中一样,也是:
1
2
3
4
5
6
由此可见,for循环和range()函数一起使用可以使我们快速让代码执行我们需要的次数。
3. 元组
3.1 元组的基本概念
- 元组的表现形式是tuple,并且是一个不可变序列。所以当我们希望数据不改变时,我们使用元组,其他时候基本上使用列表。
3.2 元组的创建
- 元组用()小括号来创建,当元组不是控元组,至少需要有一个逗号,这时括号可以省略。例如:
a = 1,2,
print(a,type(a))
代码的执行结果是:
(1, 2) <class ‘tuple’>
3.3 元组的解包
- 元组解包指将元组当中的每一个元素都赋值给一个变量,例如:
a,b,c,d = 1,2,3,4,
print(a)
print(b)
print(c)
print(d)
代码的执行结果是:
1
2
3
4
由此可见,原本是(1,2,3,4)的元组分别赋值给了a,b,c,d四个变量
3.3.1 *号在解包中的用法
在解包的时候,在其中一个变量前加上*,代表,按照位置排序,分别赋值给其他变量后,剩余的元素用序列的方式赋值给这个带号的变量,例如:
a,*b,c = 1,2,3,4,
print(a)
print(b)
print(c)
代码执行结果是:
1
[2, 3]
4
由此可见,没有星号的a,和 c 先进行了赋值,按照位置分别是第一个1,和最后一个4,剩下的2,3转换为列表赋值给了b。
4.字典
4.1 字典的基本概念
- 字典属于⼀种新的数据结构称为映射(mapping)
- 字典的作⽤和列表类似,都是用来存储对象的容器,列表存储数据的性能好,但是查询数据的性能差,字典正好与之相反
- 在字典中每⼀个元素都有唯⼀的名字,通过这个唯⼀的名字可以找到指定的
- 元素这个唯⼀的名字我们称之为key 通过key可以快速查询value 也可以称之为值
- 字典我们也称之为键值对(key-value)结构
- 每个字典中都可以有多个键值对,而每⼀个键值对我们称其为⼀项(item)
- 创建⼀个有数据的字典 语法 {key:value}
- 字典的值可以是任意对象 字典的键可以是任意的不可变对象(int str bool tuple…)
- 字典的键是不能重复的,如果出现重复的后⾯的会替换前面的
字典键值对的特点,让我们可以对字典用键来查找值,例如:
d = {'name':'水冰月','age':18,'gender':'女','ability':'美少女变身'}
print(d['name'],d['ability'])
执行结果如下:
水冰月 美少女变身
由此可见,我们通过两个key,name和ability,查找到了他对应的值,水冰月和美少女变身。这就是字典最重要的查找功能。
4.2 字典的使用
4.2.1 字典的创建
- 字典可以用dict()来创建,也可以讲一个包含有双值子序列的序列转换为字典。
- 双值序列:就是有2个值的序列,可以是元组,可以是列表,也可以是字符串
- 子序列:序列当中包含另外一个序列,那么这个元素就是子序列
例如:
d = dict({'name':'水兵月','ability':'美少女变身'})
a = ('name','蜘蛛侠')
b = ('ability','弹射蜘蛛网')
d1 = dict([a,b])
print(d,type(d))
print(d1,type(d1))
代码执行结果如下:
{‘name’: ‘水兵月’, ‘ability’: ‘美少女变身’} <class ‘dict’>
{‘name’: ‘蜘蛛侠’, ‘ability’: ‘弹射蜘蛛网’} <class ‘dict’>
由此可见,我们用2种方法都成功创建了字典。
4.2.2 通过Key获取值
- 直接用dict['key’]的方式来获取
- 可用调用get方法来获取
例如:
d = dict({'name':'水兵月','ability':'美少女变身'})
result1 = d.get('ability')
result2 = d.get('age')
result3 = d.get('age','没有该键')
print(d['ability'])
print(result1)
print(result2)
print(result3)
代码执行结果如下:
美少女变身
美少女变身
None
没有该键
首先说明,如果我们用dict['key’]来取值,key不存在的话,程序会报错Key Error, 那么我们就可以知道,get方法的好处就是在key不存在的时候可以不报错,并且还可以返回一个默认值。对比result2和result3我们就可以得到此结论。
4.2.3 字典的通用方法
- in 检查一个值是否在字典中,返回一个布尔值
- not in 检查一个值是否不在字典中,返回一个布尔值
- len() 获取字典中键值对的个数
- pop() 根据key删除字典中的k-v,返回一队k,v的元组
- popitem() 随机删除字典中的一个k-v,但是一般都会删除最后一个,删除之后会将删除的k-v作为返回值返回,返回一个元组
- update() 将其他自动中的k-v添加到当前的字典中,如果有重复的key,后面的覆盖前面的。
- setdefault(key,default)可以向字典中添加key-value,如果字典中的Key已经存在,不会对字典有任何操作或者影响。
- 删除 可以用del关键字来删除字典中的k-v
- clear() 清空字典
请参考下列代码每个方法的用法:
d = {'a':1,'b':2,'c':3}
print('a' in d)
print('a' not in d)
print(len(d))
d.popitem()
print(d)
d.update({'e':4})
print(d)
d.pop('b')
print(d)
d.setdefault('f',5)
print(d)
del d['f']
print(d)
d.clear()
print(d)
下面是调用每一个方法之后的结果:
True
False
3
{‘a’: 1, ‘b’: 2}
{‘a’: 1, ‘b’: 2, ‘e’: 4}
{‘a’: 1, ‘e’: 4}
{‘a’: 1, ‘e’: 4, ‘f’: 5}
{‘a’: 1, ‘e’: 4}
{}
4.2.4 浅复制
首先了解复制与赋值的区别,请看代码:
d = {'a':1,'b':2,'c':3}
d1 = d
d2 = d.copy()
d['b'] = 4
print('d=',d)
print('d1赋值的结果为',d1)
print('d2复制的结果为',d2)
程序执行结果为:
d= {‘a’: 1, ‘b’: 4, ‘c’: 3}
d1赋值的结果为 {‘a’: 1, ‘b’: 4, ‘c’: 3}
d2复制的结果为 {‘a’: 1, ‘b’: 2, ‘c’: 3}
由此可见,赋值的结果会随着原样本的改变而变化,复制的结果不受原样本的影响,这就是复制的特点。
接下来了解浅复制和深复制
import copy
d = {'a':{'name':'水冰月'},'b':2,'c':3}
d1 = d.copy()
d2 = copy.deepcopy(d)
d['a']['name'] = '天线宝宝'
print('d=',d)
print('d1浅复制的结果为',d1)
print('d2深复制的结果为',d2)
代码执行结果如下:
d= {‘a’: {‘name’: ‘天线宝宝’}, ‘b’: 2, ‘c’: 3}
d1浅复制的结果为 {‘a’: {‘name’: ‘天线宝宝’}, ‘b’: 2, ‘c’: 3}
d2深复制的结果为 {‘a’: {‘name’: ‘水冰月’}, ‘b’: 2, ‘c’: 3}
由此可见,当原字典样本中value为一个子字典的时候,我们用copy()这种方法,其复制特点会失效,子字典中的value会随着原字典样本的改变而改变。而我们使用copy.deepcopy这种方法的时候,子字典中的结果不会随着原字典样本的中的value改变而改变。
我们称第一种copy()的方法为浅复制,第二种copy.deepcopy的方法,为深复制。
Python:元组和字典简述相关推荐
- python元组转字典_python中怎么将元组、字典转化为列表
python中将元组.字典转化为列表的方法: python中可以使用list()方法将元组或字典转化为列表: list()方法语法:list( tup ) 参数 tup -- 要转换为列表的元组. 返 ...
- Python元组与字典详解
Python 元组 Python的元组与列表类似,不同之处在于元组的元素不能修改. 元组使用小括号,列表使用方括号. 元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可. 如下实例: tup ...
- python系列(四)python元组与字典
博主QQ:819594300 博客地址:http://zpf666.blog.51cto.com/ 有什么疑问的朋友可以联系博主,博主会帮你们解答,谢谢支持! 本博文目录: 一.元组 | 二.字典 | ...
- python 元组 列表 字典区别_Python列表、元组、字典、集合、字符串的异同总结
1.数据类型 列表.元组.字典.集合.字符串均属于python3的标准数据类型. 字符串和元组属于不可变数据,即创建后不可修改. 列表.字典.集合属于可变数据,即创建后可以修改元素. 2.创建有元素的 ...
- 【Python-24】Python 元组+列表+字典+文件
本文转载自点击打开链接 Python的元组.列表.字典数据类型是Python内置的数据结构.这些结构都是经过足够优化后的,所以如果使用好的话,在某些地方将会有很大的益处. 1元组 个人认为就 ...
- python 元组 与 字典
元组 使用圆括号创建元组 使用圆括号"()"创建元组,并将元组中的元素用逗号进行分隔. 当使用圆括号"()"创建元组时,如果元组中只包含一个元素,那么需要在该元 ...
- Python 元组和字典
1)Python元组 1.0)Python的元组与列表类似,不同之处在于元组的元素不能修改.元组使用小括号,列表使用方括号. 元组的格式 变量名 = (,,,,,,) 案例 age = (13,16, ...
- python元组和字典的拆包
""" 元组和字典的拆包 在调用带有多值参数的函数时,如果希望: 1.将一个元素变量,直接传递给args 2.将一个字典遍历,直接传递给kwargs 就可以使用拆包,简化 ...
- 菜鸟笔记python元组列表字典
一.tuple元组 1.概述 和列表相似,本质上是一种有序的集合 元组和列表的不同之处: a.列表:[ ] 元组:( ) b.列表中的元素可以进行增加和删除操作,但是,元组中的元素不能修改[元 ...
最新文章
- append函数_连载|想用Python做自动化测试?函数的参数传递机制及变量作用域
- 如何在tomcat前部署一个nginx
- 安卓四大组件之Activity
- 安卓平分位置layout_weight学习记录
- [游戏模版18] Win32 五子棋
- Java高级 —— 泛型
- macos下使用aria2_macOS下 ansible简单安装及基础使用
- JDBC连接各种数据库的方法(经典)
- url,href,src区别
- 渗透测试工具——BurpSuite
- 怎么获取大量新鲜可用的迅雷白金会员账号!?
- php工具下载 脚本之家,php脚本编辑工具题目
- linux java调优
- 温习2021年 Java 面试题汇总【100题】
- 博图PLC程序 停车场控制系统
- 下载图片到指定文件夹
- 日历插件(项目总结)(包括mobiscroll.js LCalendar 和Calendar这三个日历插件)
- js 对象的解构赋值
- 华硕飞行堡垒6打开tpm
- 【数据结构】什么是堆