我敢打赌,这份python入门教程看了绝对有用
前段时间用Python刷了一些题,把刷题的过程遇到的一些小知识点总结了一下,都是一些比较基础的知识点,特别适合一些刚入门的新手看lambda表达式
-
lambda表达式是起到一个函数速写的作用。允许在代码内嵌入一个函数的定义。它只是一个表达式,函数体比def简单很多。
-
3个数求和的例子:
>>>f = lambda x,y,z:x+y+z >>>f(1,2,3) >>>6
而如何要用正常函数实现上述功能的话,需要先用 def
定义函数名,代码如下: >>>def f(x,y,z): >>> return x+y+z >>>n = f(1,2,3) >>>6
filter()、map()和reduce()函数的区别
-
filter()函数
>>>a=[1,2,3,4,5,6,7] >>>b=filter(lambda x:x>5, a) >>print b >>>[6,7]
如果filter参数值为None,就使用identity()函数,list参数中所有为假的元素都将被删除。如下所示: >>>a=[0,1,2,3,4,5,6,7] b=filter(None, a) >>>print b >>>[1,2,3,4,5,6,7]
-
map()函数
-
map()的两个参数一个是函数名,另一个是列表或元组。
>>>map(lambda x:x+3, a) #这里的a同上 >>>[3,4,5,6,7,8,9,10] #另一个例子 >>>a=[1,2,3] >>>b=[4,5,6] >>>map(lambda x,y:x+y, a,b) >>>[5,7,9]
在刷题的过程中,map()函数通常可以结合输入一起使用,例如在一行中输入3个整数,可用如下语句:a,b,c = map(int, input().split())
-
reduce()函数
-
reduce()函数接收的参数和 map()类似,一个函数 f,一个list,但行为和 map()不同,reduce()传入的函数 f 必须接收两个参数,reduce()对list的每个元素反复调用函数f,并返回最终结果值。
-
例如,编写一个f函数,接收x和y,返回x和y的和:
def f(x, y): return x + y
-
调用 reduce(f, [1, 3, 5, 7, 9])时,reduce函数将做如下计算:
-
先计算头两个元素:f(1, 3),结果为4;
-
再把结果和第3个元素计算:f(4, 5),结果为9;
-
再把结果和第4个元素计算:f(9, 7),结果为16;
-
再把结果和第5个元素计算:f(16, 9),结果为25;
-
由于没有更多的元素了,计算结束,返回结果25。
range() 函数用法
-
range() 函数可创建一个整数列表,一般用在 for 循环中。语法如下:
range(start, stop, step) -
实例:
>>>range(10) # 从 0 开始到 10 [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(1, 11) # 从 1 开始到 11 [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] >>> range(0, 30, 5) # 步长为 5 [0, 5, 10, 15, 20, 25] >>> range(0, 10, 3) # 步长为 3 [0, 3, 6, 9] >>> range(0, -10, -1) # 负数 [0, -1, -2, -3, -4, -5, -6, -7, -8, -9] >>> range(0) [] >>> range(1, 0) []
range 在 for 中的使用: for i in range(n): # 正序遍历,表示i的取值从0到n-1 for i in range(n,0,-1): # 倒序遍历,表示i的取值从n到1
dict字典
-
dict字典使用键-值(key-value)存储,具有极快的查找速度。在Java中也称为map。
-
举个例子,假设要根据同学的名字查找对应的成绩,如果用list实现,需要两个list:
names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75, 85]
-
给定一个名字,要查找对应的成绩,就先要在names中找到对应的位置,再从scores取出对应的成绩,list越长,耗时越长。
-
如果用dict实现,只需要一个“名字”-“成绩”的对照表,直接根据名字查找成绩,无论这个表有多大,查找速度都不会变慢。用Python写一个dict如下:
>>> d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} >>> d['Michael'] 95
我在刷题的时候,遇到一个问题就是需要在循环中动态往dict添加数据,但是没有找到添加的函数,其实不用插入函数,循环中动态往dict添加数据也很简单,如下所示: dt = {} #先定义一个字典,注意是{},如果定义数组是[] for i in range(n): dt[key[i]] = value[i]
sort与sorted的排序问题
-
sort参数说明
L.sort(cmp=None, key=None, reverse=False)
sorted参数说明 sorted(iterable, cmp=None, key=None, reverse=False)
-
-
iterable:是可迭代类型,通常为一个集合;
-
cmp:用于比较的函数,比较什么由key决定,有默认值,迭代集合中的一项;
-
key:用列表元素的某个属性和函数进行作为关键字,有默认值,迭代集合中的一项;
-
reverse:排序规则. reverse = True 表示降序 或者 reverse = False 表示升序,默认值为False。
-
-
使用sort()方法对list排序会修改list本身,不会返回新list,使用方法如下:
my_list = [3, 5, 1, 4, 2] my_list.sort() print my_list #输出: [1, 2, 3, 4, 5]
而使用sorted()方法排序时会返回一个新的list: my_list = [3, 5, 1, 4, 2] result = sorted(my_list) #返回一个新的list print result #输出: [1, 2, 3, 4, 5]
常用的一些零散的小知识
-
求实数的多少次幂
-
正常在java和C语言中,求一个数的幂需要调用一个求幂的函数,但是Python中直接一个运算符就可以搞定了:
#Python求幂 10**2 #10的平方 10**4 #10的4次方
-
print(‘xx’,end=’’)中end问题
-
end是print()函数的一个参数。end 是输出语句结束以后附加的字符串,它的默认值是换行(’\n’)。如果输出的时候不需要换行需要显示的给
end
赋值。 -
例如输出一个数组,每个数之间以空格隔开,可以用如下语句:
for i in range(n): print(data[i],end=' ') #end值为空格
-
如果只是单纯的想要输出不换行,可以令
end=''
,end值为空字符串
-
// 与 / 的区别
-
“ / “ 表示浮点数除法,返回浮点结果;
-
“ // “ 表示整数除法,返回不大于结果的一个最大的整数
-
【code】
print("6 // 4 = " + str(6 // 4)) print("6 / 4 =" + str(6 / 4))
【result】 6 // 4 = 1 6 / 4 =1.5
-
记得用set去除重复元素
-
如果一个数组中有很多重复元素,根据需求需要去除重复元素的话,可以使用set集合,类似于Java的HashSet。
-
语法很简单,只需一行代码就可以去重,如下所示:
-
【code】
a = [1,1,2,2,3,4,5] a = set(a) print(a)
【result】 {1, 2, 3, 4, 5}
本文作者:
本文来自云栖社区合作伙伴 “ ” ,了解相关信息可以关注“ ”。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Oracle 各版本发行时间和特性
1983年,Oracle V3数据库发布,成为当时业界第一款可同时支持PC、小型机和主机的数据库 1991年8月,Oracle在北京成立了一家独资公司,它的中文名字叫"北京甲骨文软件系统有限公司",也就是今天人们称谓的Oracle中国公司。 ORACLE7.0新特性 数据库的完整性约束 存储的函数、过程、过程包 数据库触发器 视图编辑 用户定义的SQL函数 基于角色的安全性 双日志文件 资源限制 审核提高 不完全的数据库恢复 性能优化 能清空表 SQL*NET V2 检测点进程 数据复制 ORACLE7.1新特性 符合美国国家标准化组织ISO SQL92条目标准 均衡的数据复制 分布式恢复 动态SQL 分布查询优化 服务器管理 只读数据库 ORACLE7.2新特性 可以自动扩大的数据物理文件 可手工压缩的回滚段 创建的表和索引是不可回收的 FROM条件里支持子查询 PL/SQL程序包 PL/SQL游标变量 检查和 分布式地创建表 DBMS事务队列 DBMS_SPACE 1996年,Oracle7.3 通用数据库服务器发布 可分割的视图 位映象索引 在表扫描前异步读取操作 备用数据库 在...
- 下一篇
Java 枚举类型 enum
以下使用 JDK 版本为:1.8.0_121 枚举类型的引入 枚举类型是 Java 5 中增加的一个小特性,在此之前,实现枚举的方式为定义编译期常量形式。而代码中使用编译期常量的方式在理解性和安全性方面存在不足,单纯的常量数值不能够直观的体现出其作为枚举实例的目的,且实际中无限的取值空间也不能很好的与理论上有限的枚举空间相匹配。 常见例证为四季的代码中表示方式 常量形式的表示为: class Season{ public static final int SPRING = 1; public static final int SUMMER = 2; public static final int AUTUMN = 3; public static final int WINTER = 4; } enum 枚举类型的表示为: enum Season{ SPRING, SUMMER, AUTUMN, WINTER; } 根据类型的定义可以看出两者存在明显的差异,枚举类型的实例摆脱了数值的限制,能够以实例自身表达其作用和目的。 枚举类型的使用 enum 关键字与常用的 class 关键字作用...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- MySQL8.0.19开启GTID主从同步CentOS8
- CentOS8编译安装MySQL8.0.19
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16