python菜鸟日记3
来源:互联网 发布:分水岭算法示意图 编辑:程序博客网 时间:2024/05/21 08:46
1. 对于切片,可以进行切片的对象有字符串,列表,元组,当我们定义了一个以上三种对象其中一个,变量为a,对a这个变量所对应的对象进行切片,a[n:m:q],其中n,m表示索引,q表示步长,当我们反向(从后往前)切片的时候,最后一个数的索引是-1
True
3. 默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()
print(i,values)
0 1
1 2
5 33
6 3
5. 在python中连接符+,就是把+左右两边的变量或字符串分开看,如果没有了这个连接符,python就会把这两个看成一个整体
6. 在python中使用isinstance()函数来进行判断变量类型,比如:isinstance(’aaa222‘,(int,str)),或者isinstance(a,b)判断a是否是由b类生存,isinstance(a,tuple),判断a是否是元组类型,同时也可以用type来进行判断,>>> type(a)==int,判断a是否是int类型,但一般都不会用type进行判断的
7. 列表生成器:[object for .... in .... for ...in....if....],object表示最终列表中需要生成的数据,for....in....用来生成数据源,列表中可以有多个object,所以可以有两层for循环
if 筛选条件,比如:>>> [m+n for m in 'aef' for n in 'dbc' if (m+n) not in ('ab','de')]
['ad', 'ac', 'ed', 'eb', 'ec', 'fd', 'fb', 'fc']
8. 在Python中,这种一边循环一边计算的机制,称为生成器:generator,生成生成器的方法有两种
①、当推断的算法比较简单的时候可以使用列表生成式来生成,只需把[]换成()即可,比如:>>>a=(m+n for m in 'aef' for n in 'dbc' if (m+n) not in ('ab','de')),那么a就是一个生成器了,
9. 生成对象一定是迭代对象,迭代对象是惰性序列,只能一次输出一个,不像list可以直接全部输出,而它要么用next()函数进行一个一个输入,要么就用for循环进行全部输出,当然,我们也可以把这个迭代对象用list()函数强制转换为list类型,就可以全部输出了
10.我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list、tuple、dict、set、str等;一类是generator,包括生成器和带yield的generator function。这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
11. 凡是可作用于for循环的对象都是Iterable类型;凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
Traceback (most recent call last):
File "<pyshell#79>", line 1, in <module>
sum(20)
TypeError: 'int' object is not callable
这时函数名就是一个指向20对象的一个变量了,如果想恢复sum,重启一下python就行了
13. 高阶函数:当一个函数里面的参数可以是一个变了,也可以是一个函数的时候,那么这个函数就是高阶函数
例如: >>> def a(x,y,f):
return f(x)+f(y)
>>> a(-55,-33,abs)
88
14. map(函数名,可迭代性对象),map函数里面有两个参数,一个是函数,一个是Iterable,map函数返回map将传入的函数依次作用到序列的每个元素,并把结果作为新的迭代对象返回。注意生存的是迭代对象
15.reduce()函数,reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是: reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
2. 在Python中,迭代是通过for ... in来完成的,判断某个对象是否可迭代,引入模块,调用函数进行判断:
>>> from collections import Iterable
>>> isinstance('123assdasd',Iterable)True
3. 默认情况下,dict迭代的是key。如果要迭代value,可以用for value in d.values(),如果要同时迭代key和value,可以用for k, v in d.items()
4. 而对于列表进行迭代的时候,如果要求同时有列表的索引和值的情况下,我们就需要利用函数enumerate()来进行输出了,
例如:>>> a=[1,2,33,3]
>>> for i,values in enumerate(a):print(i,values)
0 1
1 2
5 33
6 3
5. 在python中连接符+,就是把+左右两边的变量或字符串分开看,如果没有了这个连接符,python就会把这两个看成一个整体
6. 在python中使用isinstance()函数来进行判断变量类型,比如:isinstance(’aaa222‘,(int,str)),或者isinstance(a,b)判断a是否是由b类生存,isinstance(a,tuple),判断a是否是元组类型,同时也可以用type来进行判断,>>> type(a)==int,判断a是否是int类型,但一般都不会用type进行判断的
7. 列表生成器:[object for .... in .... for ...in....if....],object表示最终列表中需要生成的数据,for....in....用来生成数据源,列表中可以有多个object,所以可以有两层for循环
if 筛选条件,比如:>>> [m+n for m in 'aef' for n in 'dbc' if (m+n) not in ('ab','de')]
['ad', 'ac', 'ed', 'eb', 'ec', 'fd', 'fb', 'fc']
8. 在Python中,这种一边循环一边计算的机制,称为生成器:generator,生成生成器的方法有两种
①、当推断的算法比较简单的时候可以使用列表生成式来生成,只需把[]换成()即可,比如:>>>a=(m+n for m in 'aef' for n in 'dbc' if (m+n) not in ('ab','de')),那么a就是一个生成器了,
②、当算法比较复杂的时候就用函数来生成,在函数中我们一般将每次循环中需要输出的值用print输出,而将print换成yield,那么这个函数就变成了生成器
9. 生成对象一定是迭代对象,迭代对象是惰性序列,只能一次输出一个,不像list可以直接全部输出,而它要么用next()函数进行一个一个输入,要么就用for循环进行全部输出,当然,我们也可以把这个迭代对象用list()函数强制转换为list类型,就可以全部输出了
10.我们已经知道,可以直接作用于for循环的数据类型有以下几种:一类是集合数据类型,如list、tuple、dict、set、str等;一类是generator,包括生成器和带yield的generator function。这些可以直接作用于for循环的对象统称为可迭代对象:Iterable。
11. 凡是可作用于for循环的对象都是Iterable类型;凡是可作用于next()函数的对象都是Iterator类型,它们表示一个惰性计算的序列;集合数据类型如list、dict、str等是Iterable但不是Iterator,不过可以通过iter()函数获得一个Iterator对象。
12. 在python中函数名其实也是一个变量,当我们把这个变量指向其他对象的时候会发生什么呢?
例如:>>> sum=20
>>> sum(20)Traceback (most recent call last):
File "<pyshell#79>", line 1, in <module>
sum(20)
TypeError: 'int' object is not callable
这时函数名就是一个指向20对象的一个变量了,如果想恢复sum,重启一下python就行了
13. 高阶函数:当一个函数里面的参数可以是一个变了,也可以是一个函数的时候,那么这个函数就是高阶函数
例如: >>> def a(x,y,f):
return f(x)+f(y)
>>> a(-55,-33,abs)
88
14. map(函数名,可迭代性对象),map函数里面有两个参数,一个是函数,一个是Iterable,map函数返回map将传入的函数依次作用到序列的每个元素,并把结果作为新的迭代对象返回。注意生存的是迭代对象
15.reduce()函数,reduce把一个函数作用在一个序列[x1, x2, x3, ...]上,这个函数必须接收两个参数,reduce把结果继续和序列的下一个元素做累积计算,其效果就是: reduce(f, [x1, x2, x3, x4]) = f(f(f(x1, x2), x3), x4)
1 0
- python菜鸟日记3
- python菜鸟日记1
- python菜鸟日记2
- python菜鸟日记4
- python菜鸟日记5
- python菜鸟日记6
- python菜鸟日记7
- python菜鸟日记8
- python菜鸟日记9
- oracle菜鸟日记3
- Java菜鸟学习日记3
- 菜鸟日记
- 【python菜鸟日记】-00 从入门指南开始
- 【python菜鸟日记】-01 算法导论-插入排序
- 【python菜鸟日记】-02算法导论-选择排序
- 【python菜鸟日记】-03算法导论-归并排序
- 学习python爬虫之菜鸟日记(一)
- 菜鸟前端日记3(原生JS)
- HD2041 超级楼梯【斐波那契数列】
- 机器人的运动范围
- js 重载问题
- new Handler().postDelayed() 延迟intent跳转
- 关于Android下,XML文件的生成和解析方式
- python菜鸟日记3
- __attribute__((constructor))
- 迭代器失效
- 一句话解释什么是回调函数
- 海量数据处理
- uva 10562 Undraw the Trees
- 数学之美:Hacker News的热门排名算法
- 分布式应急响应
- 来,接招!!! (八个Android项目源码)