网站首页 > 基础教程 正文
序列是python中最基本的数据结构。所谓的序列,指的是可以连续存放多个值的内存空间,序列中的每个元素都会有一个数字,即它的位置或索引。通过这个索引就能找到序列中的元素 。
在python的序列中,包括列表,字符串,元组,集合和字典。这些数据类型都可以使用for循环实现,但是,我们可以使用推导式可以写出更简洁的代码 。
推导式即comprehensions,推导式是可以将一个序列构建成另外一个寻序列的表达式结构体 。python共支持三种推导式。
列表(list)推导式
列表推导式是快速生成列表的一种方法,推导式主要的语法格式是在for后面跟一个表达式,此表达式一般是for或if语句。返回结果是一个根据表达式运算后生成出来的新列表 。
语法格式为:
[ expB for x in iterable expA ]
该列表里的内容主要由三部分组成,分别是中间的循环体,循环体后的表达式,循环体前的对x运算的表达式
- for x in iterable : 循环的是一个可迭代对象,包括字典,元组,字符串以及range()方法。for循环体是最先被执行的。
- expA:主要是由if语句或for语句构成,如果是if语句,一般是将x进行条件筛选,符合条件的传给expB参与运算,如果是for循环,那就是双层嵌套循环,这里需要注意的是,后面的for是内层循环 。当然该表达式也可以不写 。
- expB:主要是对for循环中的x进行的最后的运算,可以是+,-,*,%,|,条件判断以及各种方法等 。
实例
语法:
[ expB for x in iterable expA ]
实例
lst1 = [x for x in range(0,10) ] #1.for循环后无表达式
lst2 = [x for x in range(0,10) if x % 2 == 0] #2.for循环后if条件表达式
lst3 = [x*2+1 for x in range(0,10) if x % 2 == 0] #3.返回的值参与计算
lst4 = [y+str(x) for x in range(1,3) for y in ['x','y','z']] #4.嵌套循环
print("生成0~9的列表:",lst1)
print("对0~9的数对2取余返回新列表:",lst2)
print("对0~9的数对2取余后再参与计算:",lst3)
print("嵌套循环生成的数相连接:",lst4)
结果:
生成0~9的列表: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
对0~9的数对2取余返回新列表: [0, 2, 4, 6, 8]
对0~9的数对2取余后再参与计算: [1, 5, 9, 13, 17]
嵌套循环生成的数相连接: ['x1', 'y1', 'z1', 'x2', 'y2', 'z2']
说明:
对列表推导式常使用的几种用法
用法1:[x for x in iterable ] #循环后直接打印
用法2:[x for x in iterable if condition(x) ] #对x的条件判断
用法3:[operator(x) for x iterable if condition(x)] #对x条件判断后,再对x进行运算
用法4: [operator(x,y) for x in iterable for y in iterable1] #嵌套循环,对x,y进行运算
字典(dict)推导式
字典推导式和列表推导式的使用方法是类似的,只不过是在{}内实现以上的语法。
语法:
{key:val for k,v in d.items() 条件或循环表达式 }
实例:
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
d_new = {k:v+5 for k,v in d.items() if v <= 3}
print("输出字典中的value<=3的所有键值对:",d_new)
输出
{'a': 6, 'b': 7, 'c': 8}
说明:
for循环后的表达式可以是条件表达式或者循环表达式,主要是进行筛选或嵌套循环
返回结果是一个根据表达式运算后生成出来的新字典 。
集合(set)推导式
集合(set)是一个无序的不重复元素的序列,集合中的元素都是唯一的,各不相同的元素。
从语法格式上来看,set的创建和字典一样,都是将元素放在一对大括号{}内,相邻元素之间用逗号(,)分隔 。主要注意的是:创建一个空集合必须使用set()而不是{},因为{}是用来创建一个空字典。
集合推导式和上面格式差不多,
语法:
{expB for x in iterable expA }
实例
s = {x**2 for x in [1, 2, 3]}
print("集合s:",s)
输出:
集合s: {1, 4, 9}
- 上一篇: python中推导式创建序列
- 下一篇: Python基础之数值类型和序列类型
猜你喜欢
- 2024-11-27 Python中的bytearray对象,灵活的字节序列处理
- 2024-11-27 学习编程第141天 python序列解包特性及其便捷赋值
- 2024-11-27 学习编程第159天 python编程 序列的增删改查
- 2024-11-27 Python中的时间序列分解
- 2024-11-27 Python入门第4课:字符串、序列
- 2024-11-27 python基础 数值和序列类型
- 2024-11-27 学习编程第158天 python编程 利用序列求最值和存在性
- 2024-11-27 python每天学习一点点(判断数元素是否在序列中的2种方法。)
- 2024-11-27 Python中6种内建序列之通用操作
- 2024-11-27 通过 Python 代码实现时间序列数据的统计学预测模型
- 最近发表
- 标签列表
-
- gitpush (61)
- pythonif (68)
- location.href (57)
- tail-f (57)
- pythonifelse (59)
- deletesql (62)
- c++模板 (62)
- css3动画 (57)
- c#event (59)
- linuxgzip (68)
- 字符串连接 (73)
- nginx配置文件详解 (61)
- html标签 (69)
- c++初始化列表 (64)
- exec命令 (59)
- canvasfilltext (58)
- mysqlinnodbmyisam区别 (63)
- arraylistadd (66)
- node教程 (59)
- console.table (62)
- c++time_t (58)
- phpcookie (58)
- mysqldatesub函数 (63)
- window10java环境变量设置 (66)
- c++虚函数和纯虚函数的区别 (66)