Python实战编程教学第12章 Python列表推导式
>>> aList = list(map(lambda x: x*x, range(10)))
列表推导式
▪ 阿凡提与国王比赛下棋,国王说要是自己输了的话阿凡提想要什么他都可以拿 得出来。阿凡提说那就要点米吧,棋盘一共64个小格子,在第一个格子里放1粒 米,第二个格子里放2粒米,第三个格子里放4粒米,第四个格子里放8粒米,以 此类推,后面每个格子里的米都是前一个格子里的2倍,一直把64个格子都放满 。需要多少粒米呢?
#可以对range对象进行序列解包
>>> x, y, z = iter([1, 2, 3])
#使用迭代器对象进行序列解包
>>> x, y, z = map(str, range(3)) #使用可迭代的map对象进行序列解包
>>> a, b = b, a
#交换两个变量的值
>>> x, y, z = sorted([1, 3, 2]) #sorted()函数返回排序后的列表
>>> sum([2**i for i in range(64)]) 18446744073709551615
▪ 使用列表推导式实现嵌套列表的平铺
>>> vec = [[1,2,3], [4,5,6], [7,8,9]] >>> [num for elem in vec for num in elem] [1, 2, 3, 4, 5, 6, 7, 8, 9]
列表推导式
▪ 列出当前文件夹下所有Python源文件
>>> import os >>> [filename for filename in os.listdir('.') if filename.endswith(('.py', '.pyw'))]
▪ 过滤不符合条件的元素
>>> aList = [-1,-4,6,7.5,-2.3,9,-11] >>> [i for i in aList if i>0] [6, 7.5, 9]
▪ 可以使用序列解包功能对多个变量同时赋值
>>> x, y, z = 1, 2, 3
#多个变量同时赋值
>>> v_tuple = (False, 3.5, 'exp')
>>> (x, y, z) = v_tuple
>>> x, y, z = v_tuple
>>> x, y, z = range(3)
列表推导式
在列表推导式中使用多个循环,实现多序列元素的任意组合,并且可以结合条 件语句过滤特定元素
>>> [(x, y) for x in range(3) for y in range(3)] [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] >>> [(x, y) for x in [1, 2, 3] for y in [3, 1, 4] if x != y] [(1, 3), (1, 4), (2, 3), (2, 1), (2, 4), (3, 1), (3, 4)]
>>> a_tuple
('a', 'b', 'mpilgrim', 'z', 'example')
>>> a = (3)
>>> a
3
>>> a = (3,)
#包含一个元素的元组,最后必须多写个逗号
>>> a
(3,)
>>> a = 3,
#也可以这样创建元组
>>> a
(3,)
>>> x = () #空元组
第12章 Python列表推导 式
列表推导式
列表推导式使用非常简洁的方式来快速生成满足特定需求的列表,代码具有非 常强的可读性。
>>> aList = [x*x for x in range(10)]
相当于
>>> aList = [] >>> for x in range(10):
aList.append(x*x)
#使用字典时不用太多考虑元素的顺序
序列解包
序列解包遍历多个序列
>>> keys = ['a', 'b', 'c', 'd'] >>> values = [1, 2, 3, 4] >>> for k, v in zip(keys, values):
print((k, v), end=' ') ('a', 1) ('b', 2) ('c', 3) ('d', 4)
删除元素。 ❖ 从效果上看,tuple( )冻结列表,而list( )融化元组。
元组的优点
❖ 元组的速度比列表更快。如果定义了一系列常量值,而所需做的仅是对它进行 遍历,那么一般使用元组而不用列表。
❖ 元组对不需要改变的数据进行“写保护”将使得代码更加安全。
❖ 元组可用作字典键(特别是包含字符串、数值和其它元组这样的不可变数据的 元组)。列表永远不能当做字典键使用,因为列表不是不可变的。
列表推导式
列表推导式
已知有一个包含一些同学成绩的字典,计算成绩的最高分、最低分、平均分, 并查找所有最高分同学。
>>> scores = {"Zhang San": 45, "Li Si": 78, "Wang Wu": 40, "Zhou Liu": 96, "Zhao Qi": 65, "Sun Ba": 90, "Zheng Jiu": 78, "Wu Shi": 99, "Dong Shiyi": 60} >>> highest = max(scores.values()) >>> lowest = min(scores.values()) >>> average = sum(scores.values())*1.0/len(scores) >>> highest, lowest, average 99 40 72.33333333333333 >>> highestPerson = [name for name, score in scores.items() if score == highest] >>> highestPerson ['Wu Shi']
列表推导式
列表推导式
使用列表推导式生成100以内的所有素数
>>> [p for p in range(2, 100) if 0 not in [p%d for d in range(2, int(p**0.5)+1)]] [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97]
使用列表实现向量运算
>>> import random
>>> x = [random.randint(1,100) for i in range(10)] #生成随机数
>>> list(map(lambda i: i+5, x))
#所有元素同时加5
>>> x = [random.randint(1,10) for i in range(10)]
>>> a, b, c = 'ABC'
#字符串也支持序列解包
序列解包
▪ 序列解包对于列表和字典同样有效
>>> s = {'a':1, 'b':2, 'c':3} >>> b, c, d = s.items() >>> b ('c', 3) >>> b, c, d = s >>> b 'c' >>> b, c, d = s.values() >>> print(b, c, d) 132
相当于
>>> vec = [[1, 2, 3], [4, 5, 6], [7, 8, 9]] >>> result = [] >>> for elem in vec:m)
>>> result [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> y = [random.randint(1,10) for i in range(10)]
>>> import operator
>>> sum(map(operator.mul, x, y))
#向量内积
【python基础】列表推导式
【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 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的高级用法之一:列表推导式。
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语言提供的一种快速创建、生成和转换列表的简洁方式。
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:生成新列表中的值的表达式,该值可以是根据输入序列的元素计算得出的值,也可以是简单的常量。
列表推导式的用法
列表推导式的用法列表推导式,那可是Python里的一个神奇小魔法。
就像是哆啦A梦的口袋,你想要啥,只要咒语一念(规则一写),就“嗖”的一下出来了。
你可以把它想象成一个超级大厨。
比如说,你有一堆食材(原始数据),你想要一道特定的菜(特定的列表)。
这个大厨啊,能按照你的特殊口味(规则),快速地把这道菜做出来。
不像普通厨师还得慢慢挑选、处理食材,这个大厨动作快得像闪电侠。
列表推导式就像是一个超智能的分拣机器。
原始数据就像一堆混杂的彩色小球,你告诉这个机器,“我只要红色的球,而且要把它们放进漂亮的小盒子里(新的列表)”。
然后这个机器就“咔咔咔”,以迅雷不及掩耳之势,把红色小球挑出来放进盒子了。
要是没有列表推导式,处理数据就像在泥潭里走路,又慢又费力。
有了它,就像坐上了火箭,“咻”的一下就搞定了。
它能把原本需要好多行代码才能完成的工作,压缩成短短的一行,就像把长长的面条瞬间变成一个小巧的寿司。
比如说,你想得到一个从1到10的偶数的列表。
要是用普通方法,就像一个老态龙钟的乌龟慢慢爬,一步一步判断。
而用列表推导式呢,就像是魔法棒一挥,[i for i in range(1, 11) if i % 2 == 0],立马就出来了。
它还可以嵌套,这就像俄罗斯套娃一样。
外面一层大娃(外层推导式)里面还能套小娃(内层推导式)。
你可以想象这是在玩一个超级复杂又有趣的嵌套游戏,最后得到一个超级精美的套娃套装(最终的列表)。
在处理字符串的时候,列表推导式就像是一个文字魔法师。
原始字符串是一堆乱乱的字母拼图,你想要按照特定的规则把这些字母重新组合成新的单词(新的列表元素),它就能轻松做到。
要是代码世界是一个王国,列表推导式就是一个高效的小工匠。
别的工匠可能还在吭哧吭哧地用老办法建造房屋(创建列表),这个小工匠已经用新颖的方法快速地搭起了一座座精致的小房子(新的列表)。
列表推导式就像一个神奇的音乐盒,你给它一些音符(数据元素),按照一定的旋律规则(推导规则),它就能奏响美妙的音乐(生成你想要的列表)。
列表推导式使用圆括号
列表推导式使用圆括号列表推导式的概念列表推导式是一种Python编程语言中的高级特性,它允许开发者通过一种简洁明了的方式来创建新的列表。
利用列表推导式,可以在一行代码中轻松地生成一个新的列表,同时还可以对原有列表进行筛选、过滤、排序等操作。
使用圆括号在Python中,通常使用方括号来表示一个列表。
但是,在某些情况下,我们也可以使用圆括号来表示一个元组(tuple)。
因此,在使用列表推导式时,如果要将结果保存为元组而不是列表,则需要使用圆括号。
例如,我们可以使用以下代码将一个字符串转换为元组:```s = 'hello't = tuple(x.upper() for x in s)print(t)输出结果为:```('H', 'E', 'L', 'L', 'O')```上述代码中,我们首先定义了一个字符串s,并将其转换为元组t。
在生成元组t时,我们使用了一个简单的列表推导式来将字符串s中的每个字符都转换为大写字母,并将结果保存到元组t中。
更多示例除了上述示例之外,下面还提供了一些更具体的示例来演示如何使用圆括号创建和操作元组。
1. 生成10个随机整数的元组:```import randomt = tuple(random.randint(1, 10) for i in range(10))print(t)输出结果为:```(9, 2, 6, 9, 1, 7, 5, 4, 5, 2)```2. 过滤列表中的偶数,并将结果保存为元组:```lst = [1, 2, 3, 4, 5]t = tuple(x for x in lst if x % 2 !=0)print(t)```输出结果为:```(1, 3, 5)```3. 将两个列表中的元素对应相加,并将结果保存为元组:```lst1 = [1, 2, 3]lst2 = [4, 5, 6]t = tuple(x + y for x,y in zip(lst1,lst2))print(t)```输出结果为:```(5,7,9)```总结在Python中,使用圆括号可以创建一个元组。
Python列表推导式玩法
Python列表推导式玩法前⾔列表做为python的基础,是必须学习的语法之⼀。
⼀些基础的之前已经是反复温习和使⽤了,今天我们来学习它的进阶版--》列表推导式。
列表推导式:优点:是将所有的值⼀次性加载到内存中,相⽐于for循环⽣成的列表执⾏速度快,并且语法精简,⼀⾏代码就完成for循环多⾏代码所要完成的事情。
缺点:代码的可阅读性就不太友好了语法:[i for i in iterable if expression]案例1. 列表推导式可以与 if 表达式结合⾸先使⽤常⽤的for循环实现numbers = [-4, -3, -2, -1, 0, 2, 4, 6]listA = []for i in numbers:if i > 0:listA.append(i)print(listA)下⾯请出列表推导式numbers = [-4, -3, -2, -1, 0, 2, 4, 6]x = [x for x in numbers if x>0]print(x)2. 将以下⼆维列表展开成⼀维列表:list_of_lists =[[[1, 2, 3]], [[4, 5, 6]], [[7, 8, 9]]]l = [num for r in list_of_lists for num in r]s = [num for r in l for num in r]print(l)print(s)3. 使⽤列表推导式创建元组列表:要⽣成的元组如下:[(0, 1, 0, 0, 0, 0, 0),(1, 1, 1, 1, 1, 1, 1),(2, 1, 2, 4, 8, 16, 32),(3, 1, 3, 9, 27, 81, 243),(4, 1, 4, 16, 64, 256, 1024),(5, 1, 5, 25, 125, 625, 3125),(6, 1, 6, 36, 216, 1296, 7776),(7, 1, 7, 49, 343, 2401, 16807),(8, 1, 8, 64, 512, 4096, 32768),(9, 1, 9, 81, 729, 6561, 59049),(10, 1, 10, 100, 1000, 10000, 100000)]s = [(i,1,i,i**2,i*i**2,i**4,i**2*i*i**2) for i in range(11)]print(s)4. 将多嵌套列表合并为⼀个新列表:countries = [[('Finland', 'Helsinki')], [('Sweden', 'Stockholm')], [('Norway', 'Oslo')]]ls = [num for i in countries for num in i]ll = [num for i in ls for num in i]print(ll)5. 将列表更改为字典列表:ll = []countries = [[('Finland', 'Helsinki')], [('Sweden', 'Stockholm')], [('Norway', 'Oslo')]] country = ['country','city']ls = [num for i in countries for num in i]for i in ls:x = dict(zip(country, i))ll.append(x)print(ll)。
python官方文档推导式
python官方文档推导式Python的推导式(comprehension)是一种简洁的语法,用于创建列表、元组、字典或集合。
推导式可以用于列表、字典和集合,但不适用于元组。
以下是Python推导式的几种形式:列表推导式(List Comprehension):Python:[expression for item in iterable if condition] 例如,从1到10中创建一个平方的列表:Python:squares = [x**2for x in range(1, 11)] 字典推导式(Dictionary Comprehension):Python:{key: value for item in iterable if condition} 例如,创建一个字典,其中每个数字对应其平方:Python:squares_dict = {x: x**2for x in range(1, 11)} 集合推导式(Set Comprehension):Python:{expression for item in iterable if condition} 例如,从1到10中创建一个平方的集合:Python:squares_set = {x**2for x in range(1, 11)} 生成器表达式(Generator Expression):与列表推导式类似,但使用圆括号而不是方括号。
它是一个惰性求值的序列,即它不会一次性计算所有值,而是每次只返回一个值。
当需要下一个值时,它才计算下一个值。
例如:Python:squares = (x**2for x in range(1, 11))条件表达式(Conditional Expression):也被称为三元表达式,它只有一种形式,用于简单的条件判断。
它是这样写的:value_if_true if condition else value_if_false。
python高级编程之列表推导式
python⾼级编程之列表推导式1. ⼀个简单的例⼦在Python中,如果我们想修改列表中所有元素的值,可以使⽤ for 循环语句来实现。
例如,将⼀个列表中的每个元素都替换为它的平⽅:>>> L = [1, 2, 3, 4, 5]>>> for i in range(len(L)):... L[i] = L[i] ** 2>>> L[1, 4, 9, 16, 25]另⼀种优雅的实现⽅式就是使⽤列表推导式(List Comprehensions):>>> L = [1, 2, 3, 4, 5]>>> L = [x ** 2 for x in L]>>> L[1, 4, 9, 16, 25]2. 基本语法我们具体来分析上⾯给出的例⼦>>> L = [x ** 2 for x in L]我们将列表推导式写在⼀个⽅括号内,因为它最终构建的是⼀个列表。
列表推导式主要由两部分构成:循环变量表达式( x ** 2)for 循环头部( for x in L )是不是⾮常简单!3. ⼯作原理Python在执⾏列表推导式时,会对可迭代对象 L 进⾏迭代,将每⼀次迭代的值赋给循环变量 x ,然后收集变量表达式 x ** 2 的计算结果,最终由这些结果构成了新的列表,也就是列表推导式所返回的值。
只要⽀持 for 循环进⾏迭代的对象,都可以对它使⽤列表推导式。
例如,我们将⼀个字符串进⾏移位处理:>>> S = 'abcde'>>> S = ''.join([chr(ord(c)+1) for c in S])>>> S'bcdef'4. ⾼级语法除了像上⾯介绍的 [x ** 2 for x in L] 这种基本语法之外,列表推导式还有⼀些⾼级的扩展。
Python-列表推导式
Python-列表推导式列表推倒式 [结果 for 变量 in 可迭代对象 if 筛选]字典推倒式 {结果 for 变量 in 可迭代对象 if 筛选} 结果 => key:value集合推倒式 {结果 for 变量 in 可迭代对象 if 筛选} 结果 => key ⾃带去重功能列表推导式的执⾏顺序:各语句之间是嵌套关系,左边第⼆个语句是最外层,依次往右进⼀层,左边第⼀条语句是最后⼀层#⽣成⼀个存放1-100中个位数为3的数据列表# 普通写法#⽣成⼀个存放1-100中个位数为3的数据列表# 普通写法list =[]for i in range(1,101):if i % 10 == 3:list.append(i)print(list)#列表推导list1=[i for i in range(1,101) if i % 10==3]print(list1)#利⽤列表推到是将列表中的整数提取出来[True, 33, ll", "kk", 44, 34, 0]#利⽤列表推到是将列表中的整数提取出来[True, 17, "hello", "bye", 98, 34, 21]values =[True, 33, "ll", "kk", 44, 34, 0]#type()校验数据类型nums =[i for i in values if type(i) == int]print(nums)# 字典推导式:把字典中的key:value互换, {"b":"a","d":"c"}dic = {"a":"b", "c":"d"}new_dic = {dic[key]:key for key in dic} # key值是⾥⾯的 key = a,key = cprint(new_dic) # key = a,key = c dic[key] = b, dlst1 = ["唐⼈街探案","Q","5颗星","悬疑"]lst2 = ["电影", "第⼀", "评分", "类型"]dic = {lst2[i]:lst1[i] for i in range(len(lst1))}print(dic)缺点:可读性差。
