Python实战编程教学第12章 Python列表推导式
- 格式:ppt
- 大小:235.00 KB
- 文档页数:27


【python基础】列表推导式推导表达式列表、集合、字典以及⽣成器都可以使⽤推导式来创建;# 列表res = [ord(x) for x in 'spaam']# output >>> res[115, 112, 97, 97, 109]# 集合res = {ord(x) for x in 'spaam'}# output >>> res{112, 97, 115, 109}# 字典res = {x: ord(x) for x in 'spaam'}# output >>> res{'s': 115, 'p': 112, 'a': 97, 'm': 109}# ⽣成器res = (ord(x) for x in 'spaam')# output >>> res<generator object <genexpr> at 0x0000025AEC10CC10>推导公式# 列表推导式[<表达式> for <变量> in <可迭代对象> if <逻辑条件>]# 字典推导式{<键值表达式>:<元素表达式> for <变量> in <可迭代对象> if <逻辑条件>}# 集合推导式{<元素表达式> for <变量> in <可迭代对象> if <逻辑条件>}# ⽣成器推导式(<元素表达式> for <变量> in <可迭代对象> if <逻辑条件>)## 返回⼀个⽣成器对象,也是可迭代对象,但是⽣成器并不⽴即产⽣全部元素,仅在要⽤到元素的时候才⽣成,可以极⼤节省内存列表推导式列表推导式是写在⼀个⽅括号中,构建⼀个新的列表的⽅式;在⽇常使⽤当中,使⽤列表推导式替代for循环语句可以提⾼执⾏效率;简单的列表推导式# 推导式形式L = [1, 2, 3, 4, 5]res = [i + 10 for i in L]# for循环语句形式res = []for i in L:res.append(i + 10)# output >>> res[11, 12, 13, 14, 15]推导公式[输出表达式 for 变量 in 输⼊序列]嵌套循环(for)两个不同的列表# 推导式形式res = [x + y for x in 'abc' for y in 'efg']# for循环语句形式res = []for x in 'abc':for y in 'efg':res.append(x + y)# output >>> res['ae', 'af', 'ag', 'be', 'bf', 'bg', 'ce', 'cf', 'cg']推导公式[输出表达式 for 变量1 in 输⼊序列1 for 变量2 in 输⼊序列2]⼀个列表# 推导式形式L = ['abcdef', 'gggg']res = [print(i) for x in L for i in x]# for循环语句形式for x in L:for i in x:print(i)# output >>>abcdefgggg推导公式[输出表达式 for 变量1 in 输⼊序列 for 变量2 in 变量1]for 与 if 组合# 推导式形式L = [1, 2, 3, 4, 5]res = [i for i in L if i > 3]# for循环与if分句组合形式res = []for i in L:if i> 3:res.append(i)# output >>> res[4, 5]推导公式[输出表达式 for 变量 in 输⼊序列 if 可选的判断表达式]# 输出表达式,产⽣最终列表的元素# 变量,表⽰输⼊序列⾥⾯的元素# 输⼊序列# 可选的判断表达式for 与if-else组合推导公式:[exp1 if condition else exp2 for x in L]# 当L中的数据满⾜if条件时,将其做exp1处理,否则按照exp2处理,最终⽣成⼀个数据列表。
python if 列表推导式Python是世界上最受欢迎的编程语言之一。
它是一门高级编程语言,具有简洁的语法、易于使用、易于学习等特点。
其中一个非常重要的功能就是列表推导式,它可以让我们轻松地生成列表的元素。
本文将为大家深入介绍Python中的if列表推导式,让大家对列表推导式有更深入的了解。
首先,我们要了解什么是列表推导式,它通常被用于快速生成新的列表。
与for循环类似,列表推导式使用的是一种特殊的语法结构,它使用方括号[]将生成的列表中的元素包住,并使用for关键字遍历原始列表。
例如,我们可以使用列表推导式从一个已有列表中生成一个新的全是偶数的列表:```num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_list = [num for num in num_list if num % 2 == 0]print(even_list) #输出[2, 4, 6, 8, 10]```在这个例子中,我们先定义了一个包含10个数字的列表。
然后,我们使用列表推导式从该列表中筛选出所有偶数,并将它们添加到新的列表中。
我们还使用了一个if语句来判断每个数字是否为偶数。
那么如果想要使用if语句对列表推导式进行进一步筛选呢?我们可以在for循环语句后面添加if语句来筛选符合条件的元素。
例如,我们可以使用 Python if 列表推导式从一个已有列表中生成一个新的全是偶数且大于4的列表。
代码如下:```num_list = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]even_list = [num for num in num_list if num % 2 == 0 if num > 4]print(even_list) #输出[6, 8, 10]```在这个例子中,我们使用num % 2 == 0来判断数字是否为偶数,同时使用num > 4来判断数字是否大于4。
Python高级用法:列表推导式大家好,我是老马的程序人生~Python语言语法简洁,易于上手,但当你深入研究时,会发现Python有很多高级用法,这些高级用法可以大幅度提高代码的可读性和运行效率。
下面介绍Python的高级用法之一:列表推导式。
Python 2.0 版本引入的最重要的功能之一就是列表推导式。
它提供了一种从列表中生成一系列值的紧凑语法。
它也可以应用于元组,字典和集合(set)等。
(1)列表推导式[ expr for value in collection [if condition] ]【例子】x = [-4, -2, 0, 2, 4]y = [a * 2for a in x]print(y)# [-8, -4, 0, 4, 8]【例子】x = [i ** 2for i in range(1, 10)]print(x)# [1, 4, 9, 16, 25, 36, 49, 64, 81]【例子】x = [(i, i ** 2) for i in range(6)]print(x)# [(0, 0), (1, 1), (2, 4), (3, 9), (4, 16), (5, 25)]【例子】x = [i for i in range(100) if (i % 2) != 0and (i % 3) == 0]print(x)# [3, 9, 15, 21, 27, 33, 39, 45, 51, 57, 63, 69, 75, 81, 87, 93, 99]【例子】x = [(i, j) for i in range(0, 3) for j in range(0, 3)]print(x)# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]【例子】x = [[i, j] for i in range(0, 3) for j in range(0, 3)]print(x)# [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]x[0][0] = 10print(x)# [[10, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]【例子】x = [(i, j) for i in range(0, 3) if i < 1for j in range(0, 3) if j > 1] print(x)# [(0, 2)](2)元组推导式( expr for value in collection [if condition] )【例子】x = (i for i in range(10))print(x)# <generator object <genexpr> at 0x0000025BE511CC48>print(tuple(x))# (0, 1, 2, 3, 4, 5, 6, 7, 8, 9)(3)字典推导式{ key_expr: value_expr for value in collection [if condition] }【例子】b = {i: i % 2 == 0for i in range(10) if i % 3 == 0}print(b)# {0: True, 3: False, 6: True, 9: False}vals_list = [('pi', 3.14), ('phi', 1.618)]my_dict = {i[0]: i[1] for i in vals_list}print(my_dict)# {'pi': 3.14, 'phi': 1.618}(4)集合推导式{ expr for value in collection [if condition] }【例子】x = {i for i in [1, 2, 3, 4, 5, 5, 6, 4, 3, 2, 1]}print(x)# {1, 2, 3, 4, 5, 6}(5)其它next(iterator[, default]):从迭代器返回下一项。
python的列表推导式Python的列表推导式是Python语言提供的一种快速创建、生成和转换列表的简洁方式。
Python的列表推导式可以根据一个或多个输入序列以及简单的表达式,来快速创建新的列表,并且具有灵活性高、速度快、可读性好等优点。
在使用列表推导式时,我们可以使用一个或多个for循环和if条件语句来指定输入序列以及表达式,以生成新的列表。
在这篇文章中,我们将详细介绍Python的列表推导式,包括语法、使用方法、注意事项等方面。
语法Python的列表推导式通常由一个表达式和一系列for循环和if条件语句组成。
其基本语法如下:new_list = [expression for item1 in sequence1 if condition1for item2 in sequence2 if condition2...for itemN in sequenceN if conditionN]其中,包含以下要素:- expression:是生成新列表中的值的表达式,该值可以是根据输入序列的元素计算得出的值,也可以是简单的常量。
- item1,item2,...,itemN:是用于枚举输入序列中的元素的变量名。
- sequence1,sequence2,...,sequenceN:是包含输入元素的源序列或集合,这些输入元素将被用于生成新列表。
- condition1,condition2,...,conditionN:用于指定在计算表达式之前应该考虑的布尔表达式。
该布尔条件用于筛选源序列中的元素,并仅在该条件计算结果为True时才将元素包含到新列表中。
使用方法对于简单的列表推导式,我们通常可以使用以下模板来生成新列表:new_list = [expression for item in sequence if condition]这个模板包含以下要素:- expression:生成新列表中的值的表达式,该值可以是根据输入序列的元素计算得出的值,也可以是简单的常量。