2018年4月14日笔记

  • 函数关键字

def  函数声明

return  返回值

pass  略过,啥也不干

exit(1)  直接退出

  • 高阶函数:可接收另一个函数作为参数的函数

常用的高阶函数有:

  1. map()
  2. reduce()
  3. filter()
  4. sorted()  -> 最常用
  • map()函数:接收两个参数,一个是函数,一个是Iterablemap将传入的函数依次作用到序列的每个元素,并把结果作为新的Iterator返回

例1:我们有一个函数f(x)=x2,要把这个函数作用在一个list [1, 2, 3, 4]上,就可以用map()实现如下:

  • reduce()函数:把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是:

    reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)

例2:写一个将字符串转化为整数的函数,即实现内置int()函数的功能

也可使用lambda简化为:

  • filter()函数:接收一个函数f和一个list,这个函数f的作用是对每个元素进行判断,返回true或false,filter()根据判断结果自动过滤掉不符合条件的元素,返回由符合条件的元素组成的list

例3:将一个列表中的奇数过滤出来

  • sorted()函数:对所有可迭代的对象进行排序操作

sorted 语法:

sorted(iterable[, cmp[, key[, reverse]]])

参数说明:

  • iterable -- 可迭代对象。
  • cmp -- 比较的函数,这个具有两个参数,参数的值都是从可迭代对象中取出,此函数必须遵守的规则为,大于则返回1,小于则返回-1,等于则返回0。
  • key -- 主要是用来进行比较的元素,只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序。
  • reverse -- 排序规则,reverse = True 降序 , reverse = False 升序(默认)。

例4:对列表和字典进行排序

  • 列表生成式

格式为:[exp for val in collection if condition]

例如,list = [x for x in range(1,10) if x%2==0]

  • 生成器
  1. 方法一: (exp for val in collection if condition)
  2. 方法二:使用yield关键字,包含yield语句的函数会被特定的编译成生成器。yield可以理解为return,但并不退出,只是挂起,恢复时从yield下面开始执行。

通过列表生成式,我们可以直接创建一个列表。但是,受到内存限制,列表容量肯定是有限的。而且,创建一个包含100万个元素的列表,不仅占用很大的存储空间,如果我们仅仅需要访问前面几个元素,那后面绝大多数元素占用的空间都白白浪费了。

所以,如果列表元素可以按照某种算法推算出来,那我们是否可以在循环的过程中不断推算出后续的元素呢?这样就不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器(Generator)。

通过next()函数获得generator的下一个返回值

例:著名的斐波拉契数列(Fibonacci),除第一个和第二个数外,任意一个数都可由前两个数相加得到:

1, 1, 2, 3, 5, 8, 13, 21, 34, ...

斐波拉契数列用列表生成式写不出来,但可以用生成器写出来,如下:

原文地址:https://www.cnblogs.com/karl-python/p/8850324.html

时间: 2024-08-02 09:06:37

2018年4月14日笔记的相关文章

IntelliJ IDEA 最新激活码(截止到2018年10月14日)

IntelliJ IDEA 注册码: EB101IWSWD-eyJsaWNlbnNlSWQiOiJFQjEwMUlXU1dEIiwibGljZW5zZWVOYW1lIjoibGFuIHl1IiwiYXNzaWduZWVOYW1lIjoiIiwiYXNzaWduZWVFbWFpbCI6IiIsImxpY2Vuc2VSZXN0cmljdGlvbiI6IkZvciBlZHVjYXRpb25hbCB1c2Ugb25seSIsImNoZWNrQ29uY3VycmVudFVzZSI6ZmFsc2UsInBy

2018年5月8日笔记

CentOS 7上安装mysql # CentOS 7 安装mysql 1. 检测系统是否自带安装 mysql rpm -qa | grep mysql 2. 若已安装,可以进行卸载 rpm -e mysql //普通删除模式 rpm -e --nodeps mysql //强力删除模式,若普通删除时提示存在依赖文件,则进行强力删除 3. 安装mysql # centOS 7 yum install mariadb-server mariadb //在CentOS 7中,由于 MySQL数据库已

2018年4月26日笔记

内置模块:hashlib Python的hashlib提供了常见的摘要算法,如md5,sha1, sha224, sha256, sha384, sha512等等,其中md5最为常用. 什么是摘要算法呢?摘要算法又称哈希算法.散列算法.它通过一个函数,把任意长度的数据转换为一个长度固定的数据串(通常用16进制的字符串表示).md5算法得到的就是一个32位的16进制字符串. 一般用法如下:(python3环境中) 1 import hashlib 2 3 # python3 4 m1 = hash

2018年5月3日笔记

常用的正则表达式匹配规则 \d 表示一个数字字符,等价于 [0-9] \D 表示一个非数字字符,等价于 [^\d] \s 表示一个空白字符,等价于 [<空格>\t\r\n\f\v] \S 表示一个非空白字符,等价于 [^\s]\w 表示一个单词字符(数字或字母),等价于 [A-Za-z0-9_]\W 表示一个非单词字符,等价于 [^\w]. 匹配除换行符\n之外的任意一个字符 .* 在一行内,贪婪(尽可能多)匹配任意个字符 .*? 在一行内,非贪婪(尽可能少)匹配任意个字符 (?P<na

2018年5月13日笔记

SQL语句复习 创建一个库 create database DB_name; 授权一个用户 grant all privileges on *.* to 'user1'@'%' identified by 'qwe123'; 创建表 create table table_name(column_name type not null); 查询 select * from tabel_name where condition1 and condition2; 增加 insert into table

2018年5月19日笔记

进程的概念 进程是程序在计算机上的一次执行活动. 进程可分为系统进程和用户进程. 所有正在运行的进程轮流使用CPU,任何一个时间点有且只有一个进程占用CPU. 进程与线程的区别 进程 > 线程 多进程使用CPU的多个核,适合运算密集型 多线程使用CPU的一个核,核心IO密集型 python多进程 -- muiltiprocessing模块 python中的多线程无法利用多核优势,如果想要充分地使用多核CPU的资源(os.cpu_count()查看),在python中大部分情况需要使用多进程.Py

2018年12月14日 函数 总结

map() 处理序列中每个元素,得到迭代器,该迭代器  元素个数和位置与原来一致 filter() 遍历序列中的每个元素,判断每个元素得到布尔值,如果是true则留下来 people=[ {'name':"abc","age":100}, {"name":"def","age":80}, {'name':'sxj',"age":30}, {"name":"h

10月14日笔记

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>音乐</title> <!-- 引入css样式文件 --> <link rel="stylesheet" type="text/css" href="./css/yinyue.css"> </head>

11月14日笔记

namespace(命名空间),用于解决类重名问题,可以看做“类的文件夹”. 如果代码和被使用的类在一个namespace则不需要using. 在不同命名空间下的类调用有两种方法: –写全称  命名空间.类名 –先using引用命名空间,再调用 using可以声明namespace的引入,还可以实现非托管资源的释放,实现了IDisposiable的类在using中创建,using结束后会自动调用该对象的Dispose方法,释放资源. string可以看做是char的只读数组. string st