一、列表解析式
列表解析是也叫列表推导式
列题1、#生成一个列表,打印1~10的奇数
如果用正常的写法应该是:
如果改用列表解析式:
由此可知列表推导式的语法:
[返回for元素中in可迭代对象 if条件]
使用[]括号,内部是for循环,if条件可选
生成一个新的列表
列题2、#使用列表解析式打印1~10的偶数
再来对比他们的计算效率如何呢?如下
由此可知 使用列表解析式,
不会因为简写而影响效率,反而会提高效率,因为编译器会优化
减少了程序员的工作量,减少出错
简化了代码,增强了可读性
下面来看复杂的语法,一斜到底:
1、[expr for item in interable if cond1 if cond1]
等价于
ret=[]
for item in interable:
if cond1:
if cond2:
rer.append(expr)
列题3、使用列表解析式打印1~20既能被2又能被3整除的数
2、[expr for i in interable1 for j in interable2]
等价于
ret=[]
for i in interabl1:
for j in interable2:
ret.append(expr)
例题4、使用列表解析式打印九九乘法表
下面来看几个例子,回答问题
输出什么?为什么?
由此可知,在列表解析式中,构造新元祖,将a,与for y in range(3)三下,依次类推。
输出什么?
输出什么?什么元素类型?
15个元素,各个不同,元素类型是集合
了解了列表解析式的用法以及如何使用后,下面做几个练习题
列表解析式练习题
练习1
有一个列表lst=[1,4,9,16,2,5,10,15],生成一个新列表,要求新元素是lst相邻2项的和
练习2
“0001.abadicddws”是格式,要求ID格式以点号分割,左边4位从1开始的整数 ,后边10位随机小写字母,请依次生成前10个ID列表