自用
Task1:
如果对一个列表,既要遍历索引又要遍历元素时,首先可以这样写:
list1 = ["这", "是", "一个", "测试"]
for i in range (len(list1)):print i ,list1[i]#上述方法有些累赘,利用enumerate()会更加直接和优美:list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1):print index, item
>>>
0 这
1 是
2 一个
3 测试
#enumerate还可以接收第二个参数,用于指定索引起始值,如:
list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1, 1):print index, item
>>>
1 这
2 是
3 一个
4 测试#如果要统计文件的行数,可以这样写:
count = len(open(filepath, 'r').readlines())
#这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。#可以利用enumerate():
count = 0
for index, line in enumerate(open(filepath,'r')): count += 1
列表推导式
task2:
这个用法就和C语言的格式化输出很像
print('%c' % 97) # a
print('%f' % 27.658) # 27.658000
print('%5.1f' % 27.658) # ' 27.7'
注意:如果我们取的键在字典(dict)中不存在,会直接报错KeyError
C++的Map会创建这个key的元素,为它赋初值为0。
dict创建的语法有些特殊:
dic1 = dict([('apple', 4139), ('peach', 4127), ('cherry', 4098)])
dic2 = dict((('apple', 4139), ('peach', 4127), ('cherry', 4098)))
dick的函数keys和vaules
list.remove(obj) 移除列表中某个值的第一个匹配项
remove 和 pop 都可以删除元素,前者是指定具体要删除的元素,后者是指定一个索引。
不知道Python其他 的list删除会不会有迭代器失效的问题,《Python核心编程》提到的问题,待测。
通过将索引指定为-1,可让Python返回最后一个列表元素,索引 -2 返回倒数第二个列表元素,以此类推。
Python的数值(列表)切片非常常用,取值范围前闭后开。x[start : stop : step] step为步长,默认为1。
注意最后把 step 设为 -1,相当于将列表反向排列。
tuple(sub) 把一个可迭代对象转换为元组。
task 3
我为啥之前不复制要截图捏
函数
内嵌函数
闭包
- 是函数式编程的一个重要的语法结构,是一种特殊的内嵌函数。
- 如果在一个内部函数里对外层非全局作用域的变量进行引用,那么内部函数就被认为是闭包。
- 通过闭包可以访问外层非全局作用域的变量,这个作用域称为 闭包作用域。
def funX(x):def funY(y):return x * yreturn funYi = funX(8)
print(type(i)) # <class 'function'>
print(i(5)) # 40
#这语法巨奇怪有啥用啊
Python 的魔法方法
据说,Python 的对象天生拥有一些神奇的方法,它们是面向对象的 Python 的一切…
它们是可以给你的类增加魔力的特殊方法…
如果你的对象实现了这些方法中的某一个,那么这个方法就会在特殊的情况下被 Python 所调用,而这一切都是自动发生的…
类有一个名为__init__(self[, param1, param2...])
的魔法方法,该方法在类实例化时会自动调用。
也就是c++的构造函数
公有和私有
在 Python 中定义私有变量只需要在变量名或函数名前加上“__”两个下划线,那么这个函数或变量就会为私有的了。
class JustCounter:__secretCount = 0 # 私有变量publicCount = 0 # 公开变量
继承
Python 同样支持类的继承,派生类的定义如下所示:
class DerivedClassName(BaseClassName):
statement-1
.
.
.
statement-N
BaseClassName
(基类名)必须与派生类定义在一个作用域内。除了类,还可以用表达式,基类定义在另一个模块中时这一点非常有用:
class DerivedClassName(modname.BaseClassName):
statement-1
.
.
.
statement-N
参考资料:
天池龙珠计划之Python学习电子书_v0.0.2.pdf
https://blog.csdn.net/churximi/article/details/51648388
http://joyfulpandas.datawhale.club/Content/index.html