python--列表解析式详解

时间:2024-10-17 20:38:22

一、列表解析式

列表解析是也叫列表推导式

列题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列表

解法1

解法2

解法3

解法4