- input 返回的str类型,想要输入数字还需要进行类型转换
num = int(input())
,当然,如果此时输入字符就会报错 - 循环的时候使用
for a in b
,b就是整个范围,a就是依次从b中取到的值; - 循环也可以使用while需要你还
while 条件成立:执行
- 尽量少用break和continue(结束此次循环,进入下一次循环),这个不是某种语言的要求,是程序结构的要求;
- python的dict功能可以加快查找速度,dict用大括号
{}
来标记,格式为d = {A:a,B:b,C:c}
。 - 找的时候就可以直接调用获得相应的结果d[A]。
- 除了上面的格式来创建dict,也可以通过
d[A] = e
修改或者创建。 - 可以通过
f in d
的方式来检查字典中是否存在key,存在则返回true,否则返回false;或者通过get的方式d.get(f)
,存在就返回value,否则返回none - 内部存放的顺序和放入的先后顺序无关。另外,key不可以改变
- set是所有元素的集合,重复的会被剔除,仅保留一个,可以增加add,也可以减少remove。可以交运算和并运算
- set和dict的区别在于set没有value
- 不可变对象。像list这样的可变对象,内部元素的数目和内容都会改变,但是不可变对象不会改变
- 函数
- 定义函数
def func_name(parameter):执行 return ret_val
。可以传入或者返回多个参数值 - 注意:函数的定义的位置一定要在使用之前
- python可以设定传入多个参数传入,并且,可以设定,某些参数为具有默认值,比如
def enroll(name, gender, age = 6,city = "Beijing"):
,表示有两个参数age
和city
是具有默认值的,在使用的时候,可以只传入姓名和性别即可,年龄不输入就按照默认的。在第三个数据需要传入,第四个参数采用默认的时候,可以不写第三个参数的名字,如enroll('name_blabla','M',7)
;但是第三个默认,第四个参数自行输入的时候,则需要写明,如enroll('name_blabla','M',city = 'Tianjin')
。 - 默认参数不能放在必选参数前面
- 关键字参数比较好用, 最后定义一个关键字参数,想增加什么就增加什么,只要函数内部能够处理;
- 命名关键字参数:就是对上面的关键字参数进行分析,然后处理
切片
- 相当于matlab里面的索引,只不过使用方括号而已;不过,不同于matlab的还有一点,就是[a:b]是取出包含啊,但是不包含第b个元素的
- 还可以倒序取出、间隔取出等等
- 还可以字符串直接去出,不用通过变量名
- 针对list和tuple
迭代
- 这个所谓的迭代,和数学或者说算法里面的迭代有点不太一样啊,python这里说的好像就是循环,针对list和tuple的循环
生成器
- 不必创建完整的list,从而节省大量的空间。在Python中,这种一边循环一边计算的机制,称为生成器:generator
- 创建方法1:只要把一个列表生成式的[]
改成()
,就创建了一个generator。要打印出每个元素,使用next()
函数
- 但是不断next()
太麻烦,使用for n in g:print(n)
就可以很方便,因为是可迭代对象
- 这里的yield好难理解
- yield的一个特点就是执行到此即停止,下次调用从之后的第一句又开始到yield停止不妨试试下面的句子a = 'abc'
print(a)
yield a
b = 'ABC'
print(b)
yield b
从上面的这个实验大概可以看到yield的作用,但是具体的应用还需要在实际项目中进行思考
迭代器
- 区分可迭代和迭代器的区别,两者的包含关系
- 可以通过instance函数来检验变量的iterable可迭代属性和iterator迭代器属性
函数式编程
- 就是允许将一个函数作为变量传递到另一个函数中去,还允许返回一个函数
- 变量可以指向函数,函数的参量能够接受变量,那么函数的参量就能接受指向另一个函数的变量,这就成为高阶函数