广州番禺Python, Java小班周末班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人,学员的平均就业薪资有11K。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。培训的课程有Python爬虫,Python后端开发,Python办公自动化,Python大数据分析,Python量化投资,Python机器学习,Java中高级后端开发。授课详情请点击:http://chipscoco.com/?cate=6
10.4.1 什么是列表推导式?
列表推导式,又叫列表解析式。列表解析式,顾名思义,就是由已有的可迭代对象,来解析出一个新的列表。
迄今学过的可迭代对象有字符串,列表。可迭代对象可以在循环中进行遍历。在对可迭代对象中的元素进行遍历的过程中,我们可以再对元素进行处理,以生成一个新的列表。
在讲解列表推导式的基本结构之前,同学们先看一段代码,在for循环中为列表添加新的元素:
代码实例:
# __author__ = 薯条编程 # __desc__ = 在for循环中为列表添加新的元素 # 定义一个空列表 numbers = [] for _ in range(100): if _ % 2 != 0: # 如果当前元素是奇数,则添加进列表当中 numbers.append(_)在上文代码中,我们在循环中判断当前元素是否为奇数,若为奇数,则添加进列表中。为简化列表的生成代码,我们可以使用列表解析式:
# __author__ = 薯条编程 # __desc__ = 使用列表解析式来生成一个新列表 # 只需一行代码就可以生成一个包含奇数的列表 numbers = [_ for _ in range(100) if _%2 != 0 ]与直接使用for循环来添加元素相比,列表解析式更加简洁和优雅。现在开始来详细地讲解Python中的列表推导式。
10.4.2 列表推导式的基本结构
列表推导式的基本结构如下:
[element for element in iterable]element表示从可迭代对象iterable中遍历出的元素,从其基本结构可看出,列表推导式本质还是一个for循环,在for循环中每迭代一次,就会在列表中插入一个新的元素。
迄今学过的可迭代对象有字符串、列表,我们现在根据这两种可迭代对象来创建新的列表。
代码实例:
# __author__ = 薯条编程 # __desc__ = 在列表推导式中根据字符串,列表等可迭代对象创建新的列表 # 1.根据字符串对象来创建一个新列表 characters = [_ for _ in "ABC"] print(characters) # 输出为:['A', 'B', 'C'] # 2.根据列表对象来创建一个新列表 characters = [_ for _ in [1,2,3,4,5]] print(characters) # 输出为:[1, 2, 3, 4, 5]列表推导式的基本结构很简单,现在通过嵌套的for循环和条件控制结构来对列表推导式的基本结构进行扩展。
10.4.3 列表推导式的复杂结构
(1) 包含嵌套for循环的列表推导式
语法结构如下:
[element for x in iterable for y in iterable]element表示由元素x和元素y所生成的一个新的元素。iterable表示可迭代对象。为便于理解,我们可以将嵌套了for循环的列表推导式转换为普通的循环结构:
for x in iterable: for y in iterable: # 对元素x和y进行处理,生成一个新的元素 # 例如对x和y进行相加 element = x+y代码实例:
# __author__ = 薯条编程 # __desc__ = 在嵌套了for循环的列表推导式中生成一个新的列表 # 同学们在理解列表推导式式,可以将它们转换为普通的循环结构 numbers = [x+y for x in [1,2,3] for y in [1,2,3]] print(numbers) # numbers的输出为:[2, 3, 4, 3, 4, 5, 4, 5, 6](2) 包含条件控制的列表推导式
语法结构如下:
[element for element in iterable if element...]element是从可迭代对象iterable中遍历出的元素,然后通过if语句对该元素进行逻辑判断,如果元素符合条件,就添加到列表中。同样为便于理解,我们可以将包含条件控制的列表推导式转换为普通的循环结构:
for element in iterable: # 通过if来对元素进行条件控制 # 例如当前的数字为奇数就添加进列表 if element % 2 != 0: pass代码实例:
# __author__ = 薯条编程 # __desc__ = 包含条件控制的列表推导式 # 通过列表推导式生成一个只包含偶数的列表 numbers = [_ for _ in range(100) if _%2 == 0 ](3) 同时包含嵌套for循环和条件控制的复杂列表推导式
我们可以在列表推导式中同时使用嵌套for循环和条件控制,来组合成比较复杂的列表推导式。
直接看代码实例:
# __author__ = 薯条编程 # __desc__ = 在列表推导式中同时使用嵌套for循环和条件控制 numbers = [x+y for x in [1,2,3] if x % 2 == 0 for y in [1,2,3] if y % 2 !=0] """ (1) 在外层的for循环中加了一个条件控制:if x % 2 == 0,表示筛选出偶数 (2) 在内存的for循环中加了一个条件控制:if x % 2 != 0,表示筛选出奇数 """ print(numbers) # numbers的输出为:[3,5]同学们在理解列表推导式时,可以将其转换成普通的循环结构进行理解,以上文中的复杂列表推导式为例,其所对应的普通for循环代码为:
# __author__ = 薯条编程 # __desc__ = 将复杂的列表推导式转换成普通个循环结构 numbers = [] # 外层的for循环 for x in [1,2,3]: if x % 2 !=0: continue # 内层的for循环 for y in [1,2,3]: if y % 2 == 0: continue numbers.append(x+y)代码实例-计算0到100之间的所有质数:
# __author__ = 薯条编程 # __desc__ = 通过列表推导式计算0到100之间的所有质数 numbers = [x for x in range(2, 100) if 0 not in [x % y for y in range(2,x)]] """ (1)质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数 (2)外层for循环用来遍历从2到100之间的所有自然数 (3)如果当前自然数不是质数,那么其与当前自然数范围内的数相余:[x%y for y in range(2,x)],则列表中一定存在一个元素为0的数 (4)在外层for循环再判断该列表是否包含0即可,如果包含0,说明不是质数 """ print(numbers) # numbers的输出为:[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]
10.4.4 知识要点
(1) 列表推导式,又叫列表解析式。列表解析式,顾名思义,就是由已有的可迭代对象,来解析出一个新的列表。(2) 列表推导式本质还是一个for循环,在for循环中每迭代一次,就会在列表中插入一个新的元素。(3) 在列表推导式中可以嵌套for循环,以及进行条件控制,由此组合成比较复杂的列表推导式。
10.4.5 最具实力的小班培训
薯条老师在广州做Python和Java的小班培训,一个班最多10人。不在广州的同学可以报名线上直播班,跟线下小班的同学们同步学习。打算参加小班培训的同学,必须遵守薯条老师的学习安排,认真做作业和项目。把知识学好,学扎实,那么找到一份高薪的工作就是很简单的一件事。
(1) Python后端工程师高薪就业班,月薪11K-18K,免费领取课程大纲
(2) Python爬虫工程师高薪就业班,年薪十五万,免费领取课程大纲
(3) Java后端开发工程师高薪就业班,月薪11K-20K, 免费领取课程大纲
(4) Python大数据分析,量化投资就业班,月薪12K-25K,免费领取课程大纲
扫码免费领取Python学习资料: