python的一些高级特性:

切片(跟名字一样,把一个完整的东西选取一部分自己想要的去切下来):通过切片可以快速的去除一些元素,只要确定好索引位置,避免的循环导致的多写代码

数组,元组,字符串都可以用切片来获取元素,[x:y]表示从索引位置x开始索引到y位置,不包括y

[x:]从x开始索引到结束,[:y]从0开始索引到y为止(不包括y),[x:y:z]z表示每z个数获取一个数。

迭代:python中的迭代是通过for...in来完成的,只要有迭代对象,都可以迭代,dict的存储不是按照

list的方式顺序排列,所以可能会不一样的结果顺序,dict中默认迭代key,用for value in x.values()可以

实现迭代value,用for x,y in d.items()可以同时迭代dict中的key和value,利用collections模块的iterable类型去判断,

from collections import Iterable
isinstance('abc',Iterable)

如果是要对list实现类似java的下表循环,python中enumerate函数可以把list变成索引-元素对

for i,value in enumerate(['A','B','C']):
print(i,value)
...
0 A
1 B
2 C

for循环中是可以同时引用两个变量的

for(x,y) in ([1,1],[2,3],[3,9]):
print(x,y)

列表生成式:列表生成式用很简洁的代码实现一个列表的创建,按照自己的需求,可以对同一变量进行不同操作来生成list,也可以对两个变量同时进行操作来生成list,也可以调用方法来生成需求的list(如果原list中的数据类型是不同的,可以加一个额外的判断条件,if isinstance(x,数据类型)。

[x(运算符)x for x in 迭代对象 if 判断条件]

[m + n for m in 'ABC' for n in 'XYZ'] 

[s.xxxx() for s in L]

生成器:把列表生成改成generator,也可以通过函数实现复杂逻辑的generator,generator的工作原理是在for循环的过程中不断计算出下一个元素,

并在适当的条件结束for循环。函数改成的generator,遇到return语句或者执行到函数体的最后一行语句,就是结束generator的指令,for循环也随之结束。

迭代器:能够 被for循环的对象都是Iterable类型,能够作用于next()函数的对象都是Iterator()类型,表示一个惰性计算的序列,无法提前知道序列的长度,只能通过next()函数按需计算出下一个数据,只有在需要返回下一个数据时才会进行计算。

函数式编程:

高阶函数中,map()函数接收两个参数,一个函数,一个Iterable,map会作用于序列中的每一个元素,

并把结果作为新的Iterator返回;   reduce()函数同样是接收两个参数,不同的是reduce利用函数作用于

元素之后,元素处理的结果会作为新的元素继续参与函数的处理,最后返回一个结果。

filter()函数是一个筛选器,用法和map()类似,不过最后返回结果的时候只有结果为True是才会返回该结果,其余舍弃掉,返回的也是一个Iterator。

sorted()函数是一个用于排序的函数作为一个高阶函数,可以接收一个key函数来实现自定义的排序,在keys中排序后,再将相应的value值排序结果展示出来

反向排序可以传入第三个参数reverse = True。

返回函数:函数可以返回一个计算结果,也可以返回一个函数,返回一个函数时,这个函数并没有被执行,所以函数中最好不要引用可能变化的变量

匿名函数:lambda x:x*x   其中x是函数的参数,匿名函数的表达式的结果就是他的返回值。

装饰器:本身是一个高阶函数,可以返回函数,然后的话可以增强函数的功能,其中functools.wraps可以使得函数的.__name__属性不会被替换

 

学习python的日常3的更多相关文章

  1. 学习python的日常

    今天是开始正式接触python语言的第一天,然后来自前辈的知道开始了在学习过程当中用博客来记录自己的学习历程,以供自己更快地掌握这门编程语言. 大概的总结一下的话,还是按照我的编程的习惯,要学写代码, ...

  2. 学习python的日常7

    ---恢复内容开始--- 正则表达式: 在正则表达式中,用\d可以匹配一个数字,\w可以匹配一个字母或数字,'.'可以匹配任意字符,用*表示任意个字符,用+表示至少一个字符,用?表示0个货一个字符,用 ...

  3. 学习python的日常6

    错误.调试和测试: 错误处理: try: print('try...') r = 10 / 0 print('result:', r) except ZeroDivisionError as e: p ...

  4. 学习python的日常5

    形如__xxx__的变量或者函数名,在python中是有特殊用途的,例如__slots__是为了绑定属性的名称, __len()__方法是为了让class作用于len()函数,很多这样的函数都可以帮忙 ...

  5. 学习python的日常4

    偏函数: 偏函数是functools模块提供的一个功能,偏函数可以通过设定参数的默认值,降低函数调用的难度 其中设定的参数默认值实际上是可以被传入为其他值的,最后创建偏函数时可接收函数对象.*args ...

  6. 学习python的日常2

    ---恢复内容开始--- 数组list 添加用.append(i,'xxx')方法 删除用.pop(i)方法,其中i为索引位置 数组可以直接作为元素插入数组 元组tuple(初始化后不能改变,所谓不变 ...

  7. D03——C语言基础学习PYTHON

    C语言基础学习PYTHON——基础学习D03 20180804内容纲要: 1 函数的基本概念 2 函数的参数 3 函数的全局变量与局部变量 4 函数的返回值 5 递归函数 6 高阶函数 7 匿名函数 ...

  8. 人工智能时代,应立即学习python

    人工智能时代,应立即学习python 应用:web开发,自动化运维开发,自动化测试,数据分析,机器学习 1.python 快速易学习2.python 基于web开发(zhihu:tornad web框 ...

  9. 国内某Python大神自创完整版,系统性学习Python

    很多小伙伴纠结于这个一百天的时间,我觉得完全没有必要,也违背了我最初放这个大纲上来的初衷,我是觉得这个学习大纲还不错,自学按照这个来也能相对系统的学习知识,而不是零散细碎的知识最后无法整合,每个人的基 ...

随机推荐

  1. 同时购入两台同款thinkpad笔记本电脑,分别使用同一账户激活office失败--------------解决方法(账户下有多个Office激活信息,重装后提示“许可证不正确或者最大激活次数”)

    如题所述,该问题曾多次与京东商城售后,京东thinkpad品牌售后,thinkpad售后等进行沟通,最后通过微软的电话激活才成功,不过在之后发现了这么一个帖子,应该是官方给出的,应该合理,没有实际验证 ...

  2. ISO/IEC 9899:2011 条款6.10.2——源文件包含

    6.10.2 源文件包含 约束 1.一个#include指示符应该指定一个能被实现处理的头文件或源文件. 语义 2.一个预处理指示符如下形式 #    include    <h-char-se ...

  3. copyProperties 忽略null值字段

    在做项目时遇到需要copy两个对象之间的属性值,但是有源对象有null值,在使用BeanUtils来copy时null值会覆盖目标对象的同名字段属性值,然后采用以下方法找到null值字段,然后忽略: ...

  4. [LeetCode] 685. Redundant Connection II 冗余的连接之 II

    In this problem, a rooted tree is a directed graph such that, there is exactly one node (the root) f ...

  5. Java之Java程序的基本结构

    Java的基本结构是 /** * 可以用来自动创建文档的注释 */ public class Hello { public static void main(String[] args) { // 向 ...

  6. LeetCode的一道题引申的python实现的对字符串进行分词,提取词频的方法

    在LeetCode上刷一道题,题目如下: 3. 无重复字符的最长子串 给定一个字符串,请你找出其中不含有重复字符的?最长子串?的长度. 示例?1: 输入: "abcabcbb"输出 ...

  7. nvm安装、解决nvm command not found问题、卸载

    安装 nvm是node的包版本管理工具,github地址如下:nvm 安装命令 1 curl -o- https://raw.githubusercontent.com/creationix/nvm/ ...

  8. Java字符串无意识的递归

    Java中的每个类基本上都继承自Object,标准容器类自然也不例外.因此容器类都有toString()方法,并且重写了该方法,使得它生成的String结果能够表达容器本身,以及容器所包含的对象.例如 ...

  9. SQL——函数

    演示c_grade表 一.AVG() AVG()函数用于返回数值列的平均值 例: SELECT AVG(score) FROM c_grade; 运行结果: 通过运行结果可以看到,score字段为Nu ...

  10. tft_LCD一些引脚极性设置方法:vsync, hsync, VBLANK

    转载:https://blog.csdn.net/u014170207/article/details/52662988/ 在RGB模式中,LCD数据的扫描是以行为单位的.HSYNC是水平同步信号.P ...