这篇文章主要介绍“python推导式知识点有哪些”,在日常操作中,相信很多人在python推导式知识点有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python推导式知识点有哪些”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!
麻栗坡网站建设公司创新互联公司,麻栗坡网站设计制作,有大型网站制作公司丰富经验。已为麻栗坡近千家提供企业网站建设服务。企业网站搭建\外贸营销网站建设要多少钱,请找那个售后服务好的麻栗坡做网站的公司定做!
推导式的定义
推导式可以简洁、高效地将散乱的数据组织起来存放到容器(列表、元组、字典、集合)中。
推导式是python简洁、优雅、高效的完美体现。熟练掌握推导式,相信会对你编写python程序有很大的帮助。
运用场景
推导式一般是配合循环使用的,通过推导式组织起来的数据可以很方便的循环处理,未经组织的零散数据处理起来会很麻烦。例如要找到很多数字中符合某种特征的数字,放入列表中循环判断处理就很方便。再如读取日志文件,需要筛选出符合某种条件的记录时,将数据组织成列表嵌套字典结构可读性会很高、处理也更加方便。python程序员在编写代码时几乎每天都会用到推导式。
推导式的构造
推导式可以创建容器对象(列表、元组、字典、集合等等),推导式的基本构造请看下图:
容器模板可以是表达式,可以存在多个变量。
for语句可以嵌套多条for语句
if语句可对容器模板中的变量进行筛选,满足条件的才放入容器,不满足条件的则舍弃。
推导式案例
以下会列举非常多的代码示例,学习推导式的朋友一定要认真练习,在练习的过程中熟悉和掌握推导式。
不同容器的推导式:
# 列表推导式:0-9 l1 = [i for i in range(10)] # 列表推导式:0-9范围内的偶数 l2 = [i for i in range(10) if i % 2 == 0] print(l1) print(l2) # 元组推导式:0-9 t1 = tuple(i for i in range(10)) # 不用tuple生成的是迭代器 # 元组推导式:0-9范围内的偶数 t2 = tuple(i for i in range(10) if i % 2 == 0) # 不用tuple生成的是迭代器 print(t1) print(t2) # 集合推导式:0-9 l1 = {i for i in range(10)} # 集合推导式:0-9范围内的偶数 l2 = {i for i in range(10) if i % 2 == 0} print(l1) print(l2) # 字典推导式,键是0-9,值是a-j d1 = {x: y for x, y in zip(range(10), 'abcdefghij')} # 字典推导式,键是0-9,值是a-j d2 = {x: y for x, y in zip(range(10), (chr(i) for i in range(97, 107)))} # 字典推导式,一行代码互换键和值 d3 = {y:x for x,y in d1.items()} print(d1) print(d2) print(d3) out: (0, 1, 2, 3, 4, 5, 6, 7, 8, 9) (0, 2, 4, 6, 8) {0, 1, 2, 3, 4, 5, 6, 7, 8, 9} {0, 2, 4, 6, 8} {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j'} {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j'} {'a': 0, 'b': 1, 'c': 2, 'd': 3, 'e': 4, 'f': 5, 'g': 6, 'h': 7, 'i': 8, 'j': 9}
多条for嵌套推导式:
# 注意多条for嵌套时,先循环最左边,再循环右边 list1 = [(x, y) for x in range(5) for y in range(3)] list2 = [[x,y,z] for x in range(1,3) for y in range(1,4) for z in range(1,3)] print(list1) print(list2) out: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2), (3, 0), (3, 1), (3, 2), (4, 0), (4, 1), (4, 2)] [[1, 1, 1], [1, 1, 2], [1, 2, 1], [1, 2, 2], [1, 3, 1], [1, 3, 2], [2, 1, 1], [2, 1, 2], [2, 2, 1], [2, 2, 2], [2, 3, 1], [2, 3, 2]]
容器模板:
list1 = [(x, y) for x in range(3) for y in range(3)] #list内的元素是tuple list2 = [{x, y} for x in range(3) for y in range(3)] #list内的元素是set list3 = [[x, y] for x in range(3) for y in range(3)] #list内的元素是list print(list1) print(list2) print(list3) out: [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)] [{0}, {0, 1}, {0, 2}, {0, 1}, {1}, {1, 2}, {0, 2}, {1, 2}, {2}] [[0, 0], [0, 1], [0, 2], [1, 0], [1, 1], [1, 2], [2, 0], [2, 1], [2, 2]]
容器模板中使用表达式:
# 创建字典,键值对是0:a..9:j dict1 = {x: y for x, y in zip(range(10), 'abcdefghij')} # 创建字典,键值对是0:a..9:j,将键转换成字符型,将值从小写字母转换成大写字母 dict2 = {str(x): y.upper() for x, y in zip(range(10), 'abcdefghij')} print(dict1) print(dict2) out: {0: 'a', 1: 'b', 2: 'c', 3: 'd', 4: 'e', 5: 'f', 6: 'g', 7: 'h', 8: 'i', 9: 'j'} {'0': 'A', '1': 'B', '2': 'C', '3': 'D', '4': 'E', '5': 'F', '6': 'G', '7': 'H', '8': 'I', '9': 'J'}
if筛选元素:
list1 = [chr(i) for i in range(97, 123)] # 创建列表,元素是26个小写字母 list2 = [chr(i) for i in range(97, 123) if i % 2 == 0] # 创建列表,只保留ascii值是偶数的字母 list3 = [chr(i) for i in range(97, 123) if i % 2 == 1] # 创建列表,只保留ascii值是奇数的字母 list4 = [chr(i) for i in range(97, 123) if i < 97 + 13] # 创建列表,只保留26个字母的前面一半 list5 = [chr(i) for i in range(97, 123) if i >= 97 + 13] # 创建列表,只保留26个字母的后面一半 print(list1) print(list2) print(list3) print(list4) print(list5) out: ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z'] ['b', 'd', 'f', 'h', 'j', 'l', 'n', 'p', 'r', 't', 'v', 'x', 'z'] ['a', 'c', 'e', 'g', 'i', 'k', 'm', 'o', 'q', 's', 'u', 'w', 'y'] ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm'] ['n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z']
到此,关于“python推导式知识点有哪些”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!
当前标题:python推导式知识点有哪些
文章出自:http://scgulin.cn/article/goehpg.html