本人主要是利用慕课网(www.imooc.com)上python入门课程(https://www.imooc.com/learn/177)对该语言进行学习
文章是对慕课网上的知识点进行总结,一切图片皆来源于该课程。(我只是大自然的搬运工。)
其实就是一些琐碎的知识进行汇总,博主主要是记性不好怕忘所以一开始是记在了《有道云笔记》上,后期发现好像记的东西有点多于是乎直接搬运到了csdn,所以这篇文章只是记给自己看的。所以。本文没有排版!!!(排版强迫症患者请绕路!)(如果博主后面有时间的话可能会重新梳理下。)
第一次写博客,蛮有新鲜感的~~
2018.9.28 星期五 17:00 于Bluemsum
1.基础数据类型一些归纳
11 / 4 = 2
11.0 /4 = 2.5
要计算11/4的精确结果 把两个数其中一个变为浮点数即可。
Python把0、空字符串''和None看成 False,其他数值和非空字符串都看成 True
集合
有序集合:list,tuple,str和unicode; 无序集合:set 无序集合并且具有 key-value 对:dict
3.
list集合的查找元素(还可以-1,-2···)insert(位置,元素) 删除元素pop(),空的为删除最后一个元素并返回该值,可在里面加位置指定删除
4.
tuple 元组 一旦创建完毕,无法修改
tuple一开始指向的list并没有改成别的list,所以,tuple所谓的“不变”是说,tuple的每个元素,指向永远不变。即指向'a',就不能改成指向'b',指向一个list,就不能改成指向其他对象,但指向的这个list本身是可变的!
5.dict三大特点
1⃣️dict的第一个特点是查找速度快,无论dict有10个元素还是10万个元素,查找速度都一样。而list的查找速度随着元素增加而逐渐下降。
不过dict的查找速度快不是没有代价的,dict的缺点是占用内存大,还会浪费很多内容,list正好相反,占用内存小,但是查找速度慢。
2⃣️集合是无序的,可能打印结果和输入预期结果不一样
3⃣️dict的第三个特点是作为 key 的元素必须不可变,Python的基本类型如字符串、整数、浮点数都是不可变的,都可以作为 key。但是list是可变的,就不能作为 key。
6.2访问dict
遍历dict
6.set
dict的作用是建立一组 key 和一组 value 的映射关系,dict的key是不能重复的。
有的时候,我们只想要 dict 的 key,不关心 key 对应的 value,目的就是保证这个集合的元素不会重复,这时,set就派上用场了。
set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像。
set的内部结构和dict很像,唯一区别是不存储value,因此,判断一个元素是否在set中速度很快。
set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
最后,set存储的元素也是没有顺序的。
访问set
7.函数
可以直接从Python的官方网站查看文档: http://docs.python.org/2/library/functions.html
也可以在交互式命令行通过 help(abs) 查看abs函数的帮助信息。
7.2调用函数
7.3 Python之编写函数
7.4
函数返回多值
7.5 递归函数
使用递归函数需要注意防止栈溢出。在计算机中,函数调用是通过栈(stack)这种数据结构实现的,每当进入一个函数调用,栈就会加一层栈帧,每当函数返回,栈就会减一层栈帧。由于栈的大小不是无限的,所以,递归调用的次数过多,会导致栈溢出。可以试试计算 fact(10000)。
7.6 定义默认参数
定义函数的时候,还可以有默认参数。
例如Python自带的 int() 函数,其实就有两个参数,我们既可以传一个参数,又可以传两个参数:
>>> int('123') 123 >>> int('123', 8) 83
int()函数的第二个参数是转换进制,如果不传,默认是十进制 (base=10),如果传了,就用传入的参数。
可见,函数的默认参数的作用是简化调用,你只需要把必须的参数传进去。但是在需要的时候,又可以传入额外的参数来覆盖默认参数值。
7.7Python之定义可变参数
如果想让一个函数能接受任意个参数,我们就可以定义一个可变参数:
def fn(*args): print args
可变参数的名字前面有个 * 号,我们可以传入0个、1个或多个参数给可变参数:
>>> fn() () >>> fn('a') ('a',) >>> fn('a', 'b') ('a', 'b') >>> fn('a', 'b', 'c') ('a', 'b', 'c')
可变参数也不是很神秘,Python解释器会把传入的一组参数组装成一个tuple传递给可变参数,因此,在函数内部,直接把变量 args 看成一个 tuple 就好了。
定义可变参数的目的也是为了简化调用。假设我们要计算任意个数的平均值,就可以定义一个可变参数:
def average(*args): ...
这样,在调用的时候,可以这样写:
>>> average() 0 >>> average(1, 2) 1.5 >>> average(1, 2, 2, 3, 4) 2.4
第8章 切片
8.1
slice操作
range(start, stop, step)
8.2倒序切片
8.3对字符串切片
9.迭代
9.2索引迭代
Python中,迭代永远是取出元素本身,而非元素的索引。
对于有序集合,元素确实是有索引的。有的时候,我们确实想在 for 循环中拿到索引,怎么办?
方法是使用 enumerate() 函数:
APPEND:
zip()函数可以把两个 list 变成一个 list:
>>> zip([10, 20, 30], ['A', 'B', 'C']) [(10, 'A'), (20, 'B'), (30, 'C')]
9.3迭代dict的value
那这两个方法有何不同之处呢?
1. values() 方法实际上把一个 dict 转换成了包含 value 的list。
2. 但是 itervalues() 方法不会转换,它会在迭代过程中依次从 dict 中取出 value,所以 itervalues() 方法比 values() 方法节省了生成 list 所需的内存。
3. 打印 itervalues() 发现它返回一个
如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。
9.4迭代dict的key和value
10.1 列表生成式
10.2 复杂表达式
10.3条件过滤
10.4 多层表达式