Python新人学习随笔---零碎知识点总结

本人主要是利用慕课网(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() 发现它返回一个 <dictionary-valueiterator> 对象,这说明在Python中,for 循环可作用的迭代对象远不止 list,tuple,str,unicode,dict等,任何可迭代对象都可以作用于for循环,而内部如何迭代我们通常并不用关心。

如果一个对象说自己可迭代,那我们就直接用 for 循环去迭代它,可见,迭代是一种抽象的数据操作,它不对迭代对象内部的数据有任何要求。

9.4迭代dict的key和value

10.1 列表生成式

10.2 复杂表达式

10.3条件过滤

10.4 多层表达式

猜你喜欢

转载自blog.csdn.net/Leon_Theprofessional/article/details/82887386
今日推荐