Python推导式如何使用


本文小编为大家详细介绍“Python推导式如何使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python推导式如何使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。推导式是 for 循环的简化使用方法,使用推导式,将一个可迭代对象中的数据遍历到某一个容器当中。简单的来说就是用一行for循环语句,遍历一个可迭代对象中的所有数据,然后将遍历出来的数据进行处理放入对应的容器中的一个过程和方式。和推导类似作用的还有三元运算符,三元运算符是条件判断语句的简化使用方法。语法:val for val 免费云主机域名in Iterable就是存入容器中的数据+for循环语句推导式有三种表达方式,分别用对应的符号包裹推导式语句:列表推导试:[val for val in Iterable]集合推导式:{val for val in Iterable}字典推导式:{x,y for x,y in Iterable}列表推导式:列表推到式,遍历出来的数据最终就会变成一个列表数据。列表中存入10条数据:单循环推导式:带有判断条件的单循环推导式:多循环推导式:1、将字典中的数据变成[‘x=A’, ‘y=B’, ‘z=c’]的样式{‘x’: ‘A’, ‘y’: ‘B’, ‘z’: ‘C’ }2、将所用元素变成纯小写[“ADDD”,”dddDD”,”DDaa”,”sss”]3、x是0-5之间的偶数,y是0-5之间的奇数 把x,y组成一起变成元组,放到列表当中4、使用列表推导式 制作所有99乘法表中的运算5、求M,N中矩阵和元素的乘积M = [[1,2,3], [4,5,6], [7,8,9]]
N = [[2,2,2], [3,3,3], [4,4,4]]集合推导式和列表推导式的用法基本一样,但是外面使用大括号包括,得到的数据是一个集合。例题:字典推导式也是一样的用法,但是字典的数据是以键值对的形式存在的,所以返回的数据、或者要将返回的数据变成两个,以对应键值。基础语法:将列表中的键值对的变成一个字典功能:枚举,根据索引号码 和 Iterable 中的值,一个一个拿出来配对组成元组,放入迭代器中,然后返回迭代器。语法:enumerate(iterable, [start = 0])参数:iterable:可迭代数据
start:可以选择开始的索引号(默认从0开始索引)基本语法:上面的举例当中,如果使用字典推导式和enumerate函数配合,就可以用一句话达成组成一个字典的目的。功能:将多个Iterable中的值,一个一个拿出来配对组成元组放入迭代器中,如果某个元素多出,没有匹配项就会被舍弃。语法:zip(iterable, iterable1, ……)参数就是一个个的可迭代对象。基本语法:下面的举例当中,将三个列表中的元素以一一对应组成元组,但是最小的列表中只有三个元素,所以只能一一对应组成三对元组,而多出的元素就被舍弃。为什么没有元组推导式?推导式我们到此学习完了,但是我们就发现,推导式就是在容器中使用一个for循环而已,为什么没有元组推导式?在有的时候,我们需要在一个列表或者其它的一些容器中存放大量的值,我们一般会怎么使用呢?比如在初始化一个列表的时候我们使用for循环和append的方法去创建吗?这里大家注意,如果条件允许的话,那么我们一定是要优先使用推导式而不是for循环加append的方式,原因很简单,因为底层逻辑的不同,使推导式的执行速度相比for循环加append更快。经过测试我们可以看到,推导式的速度大约是for循环的2倍多,是什么导致的?还记得我们之前使用过的dis模块吗?结果如下:4 0 BUILD_LIST 0
2 STORE_FAST 0 (lst)
5 4 SETUP_LOOP 26 (to 32)
6 LOAD_GLOBAL 0 (range)
8 LOAD_CONST 1 (10)
10 CALL_FUNCTION 1
12 GET_ITER
>> 14 FOR_ITER 14 (to 30)
16 STORE_FAST 1 (i)
6 18 LOAD_FAST 0 (lst)
20 LOAD_ATTR 1 (append)
22 LOAD_FAST 1 (i)
24 CALL_FUNCTION 1
26 POP_TOP
28 JUMP_ABSOLUTE 14
>> 30 POP_BLOCK
7 >> 32 LOAD_FAST 0 (lst)
34 RETURN_VALUE
—————————————————————————–
11 0 LOAD_CONST 1 ( at 0x000002C71AD950C0, file "tset.py", line 11>)
2 LOAD_CONST 2 ('der..')
4 MAKE_FUNCTION 0
6 LOAD_GLOBAL 0 (range)
8 LOAD_CONST 3 (10)
10 CALL_FUNCTION 1
12 GET_ITER
14 CALL_FUNCTION 1
16 STORE_FAST 0 (lst)
12 18 LOAD_FAST 0 (lst)
20 RETURN_VALUE
从上述结果中我们就是可以看出,在这种情况下,for循环因为开始定义列表、循环中的append方法的是使用,比推导式要多出几个环节,因此速度相比之下变得很慢,这就是原因。再次我们也再说一句,之后碰到关于速度和底层之类的疑惑的时候,就可以简单的使用timeitdis去验证和简答的理解。读到这里,这篇“Python推导式如何使用”文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注百云主机行业资讯频道。

相关推荐: css3动画和jquery动画有哪些区别

本篇内容介绍了“css3动画和jquery动画有哪些区别”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望免费云主机域名大家仔细阅读,能够学有所成! css3动画和jquery动画的区别:1、…

免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。

Like (0)
Donate 微信扫一扫 微信扫一扫
Previous 05/03 11:14
Next 05/03 11:14

相关推荐