Python学习笔记
(内容基于《零基础入门学习python》–小甲鱼)
二,基础知识
1.变量
python和大多数计算机语言不同,他并不是把值储存在变量中,而是把名字“贴”在上面。python的变量不需要声明
注意(基本与c相同):
- 使用变量前先赋值。
- 变量明可以包括字母,数字,下划线,但不能与数字开头。
- 字母可以是大写或小写,但大小写是不同的。
- 等号(=)是赋值的意思,左边为名字,右边是值。
- 取个专业一点的名字。
2.字符串
- python字符串的标识,在字符两边加上单引号或双引号,“XXX”,**‘xxx’**二者效果一样,但是不可以混用。
- 长字符串:用三个双引号,格式**""“XXXXX”""**。(在行数非常多的时候使用)
- 原始字符串:在字符串前面加上r,r"\nXXXX",等同于"\\nXXX"。"\n"为换行符,r对其进行转意,我认为加r意味着""其中都是字符没有其他特殊含义。
注意:
如果要在字符中出现单引号或者双引号可以"X’X",也可以’X"X’,还可也使用转义字符"",或者原始字符串。
3.条件分支
格式:
if 条件:
条件为真(True)执行的操作
else:
条件为加(False)执行的操作
4.while循环
格式
while 条件:
条件为真(True)执行的操作
5数据类型
-
整形:整数,python整形的长度不受限制。
-
浮点型:小数,大数也可以用e记法,e后面的数为整数。如,1.5e10,2.5e-21。(大E和小都可以)
-
布尔类型:True和False(真和假),True相当于整形1,False为0,但最好不要用来计算。
-
类型转换:
-
int():将其他类型转换为整数。注意浮点数转换整数是直接砍掉,不是四舍五入。
-
float(),str()也是把其他类型转换为对应类型,前者为浮点型,后者为字符串。
-
-
获得关于类型的信息:type(),isinstance()。前者直接返回参数的类型,后者有两个参数,若两个参数的类型一样返回True,不一样则为Flase。
6常用操作符
-
算数操作符:+ ,-,*,/,%,//
-
注意/就是正常的除法,不是取整。//是取整,%取余,为幂运算后面的数是指数。
-
也可以使用+=这种形式表达的含义和C语言一样。
-
优先级:先乘除后相加,有括号先算括号里的。注意:**幂运算操作符,比左侧的一元操作符优先级高,比右侧的一元操作符优先级低。(实在整不明白疯狂用括号)
-
-
比较操作符:< <= > >= == !=
-
逻辑操作符:and or not(取反),前两者于C的&&和||效果一样。
-
操作符优先级:
注意:3<4<5在Python中合法,等同于3<4and4<5。
三,循环和分支
1.python中的多路分支
if 条件:
内容
elif 条件:
内容
elif 条件:
内容
elif 条件:
内容
else:
内容
注意:
- python可以避免“悬挂else”:因为严格的缩进是代码必须正确对齐。
- 条件表达式:
a=x if 条件 else y
当条件为True时a的值为x,否则为y。该表达式为三元操作符。 - 断言assert
2.循环语句
2.1.while和for循环语句
while之前已经介绍这里注重说for
for
结构:
for 变量 in 列表:
循环体
理解:在列表里依次变量,把列表中的一个值赋值给变量。
2.2.循环涉及的函数和语句
-
range():
函数原型:range([start],stop,[step=1]),[]其中的参数是可选择的参数,建议与for搭配。
解释:生产从start的参数值开始,到stop参数值结束的数字序列,step表示间隔默认值是1.
列子:
for in range(5)
,为i赋值从0到4,注意不包括5。 -
break语句
作用是终止当前循环,跳出循环体。
-
continue语句
终止本轮循环并开始下一轮(注意在开始下一轮之前会先测试循环条件,若测试为假则直接推出循环)
四,列表,元组和字符串
1.列表
1.1.列表的创建
number =[1,2,3,4,5] #与创建普通变量相似,用中括号括起一堆数据
mix =[1,"abc",3.14,[1,2,3]] #python的变量没有数据类型,所以列表里可以放入各种类型的数据,也可以在放入一个列表,类似c语言中的二元数组
empty=[] #在不知道存入什么数据时可以建一个空列表
2.2列表的访问(列表的成员函数)
2.2.1向列表中添加元素
-
append():向列表末尾添加一个元素
number = [1,2,3,4,5] number.append(6) #在末尾添加6,number变成[1,2,3,4,5,6]
-
extend():使用一个列表扩展另一个列表(向列表末尾添加多个元素)
number.extend([7,8]) #在末尾添加7,8,number变成[1,2,3,4,5,6,7,8]
-
insert():在列表的任意位置插入元素
#insert()有两个参数,第一个参数代表列表中的位置,第二个参数在这个位置插入的一个元素 number.insert(0,0)#在0位置插入0,同c一样python的列表索引也是从0开始 #结果[0,1,2,3,4,5,6,7,8]
2.2.2从列表中获取元素
number[0]#获取第0位
number[1],number[3]=mumber[3],mumber[1] #number[1],number[3]位置互换
2.2.2从列表中删除元素
-
remove(): 从列表中删除已知元素
number.remove(1) #从列表中删除1,结果[0,2,3,4,5,6,7,8]
-
del语句:删除列表中指定位置元素,也可以直接删除一个列表
del number[1] #删除number的第1位 del number #删除number
-
pop():默认弹出左后一个元素,加上索引值即弹出指定位置的元素
number.pop() #弹出最后一个元素 number.pop(2) #弹出第2位的元素
2.2.3其他成员函数
#count() 计算参数在列表中出现的次数
#index() 返回参数在列表中的位置
#reverse() 把列表翻转
#sort() 默认把列表成员进行从小到大排,参数为reverse=Ture就是从小到大排序
2.2.4常用操作符
2.2.5列表分片
名[start:stop:step] #列表的分片是建立一个原列表的拷贝,不会改变原列表
#一次性获取列表多个元素
number[0:2] #意义number从0到1的元素[0,1],若start不填默认位置0,stop不填默认位置结尾,step表示步长,也就是间隔默认为1
number[0:8:2] #[0,2,4,6,8]
number[::-1] #step为-1,复制一个反转的列表
注意:关于列表的拷贝,要用列表的分片。python的变量就像一个标签或是名字只是把列表贴上了这个名字,修改这个列表也会修改他 所拷贝的列表(类似C语言中的指针)所以再拷贝的时候要使用列表的分片。
五函数
1创建和调用函数
def 函数名() :#创建
函数名() #调用
2函数的参数
def 函数名(a,b)
括号里的a,b就是参数。
2.1形参和实参
形参指的是函数创建和定义过程中括号里的参数,实参指的是函数在被调用时传进来的参数
2.2关键字参数
普通的参数叫位置参数。
def add(a,b):
print(a+b)
add(1,2) #和add(b=2,a=1)时一样的,a和b就是关键字
2.3默认参数
在函数定义的时候赋予了默认值的参数
def add(a=1,b=2)
2.4收集参数
在函数定义时在参数前面加上* def add(*params)
收集参数也被称为可变参数,在使用收集参数式可以传递无数个参数,函数会把这些参数打包成一个组。注意:如果在使用收集参数的同时要使用其他参数,其他参数应该使用关键字的方式来传递,否则就会出现错误。
*也可以用来解包,在一个组前面加上 * 就是把一个组解成一个一个的参数
3函数的返回值
def add(a,b):
return a+b #return 值 该函数调用后返回这个值
注意python可以同时返回多个值,可以返回一个列表,也可以以一个一个值的形式返回
4函数变量的作用域
4.1局部变量和全局变量
在函数里面定义的参数及变量,都称为局部变量,在函数之外这些变量都是无效的。
全局变量有更大作用域,在函数中也可以访问这个变量。注意:全局变量在整个代码段中都可以访问到,但如果在函数内部去修改全局变量的值,python会在内部新建一个一样的全局变量来代替。但如果非要改变的化可以使用global关键字
count=5
def aaa():
global count
count=10
print(count)
4.2内嵌函数
在函数定义内部在创建一个函数
4.3闭包
在一个内部函数里,对外部作用域的变量进行引用,那么内部就被确认为是闭包
5lambda表达式
六字典和集合
1.字典
字典是python中唯一的映射类型
格式:{键:值,键:值,键:值,键:值}
1.1创建和访问字典
empyt={} #创建一个空字典
#也可以用dict()来创建字典
dict1=dict((('f',70),('i',105),('s',115))) #{'s':115,'f':70,'i':105}
dict1=dict(f=70,i=105,s=115) #{'s':115,'f':70,'i':105} 注意此方法建不能加上字符串的引号
#还可以直接给字典的建赋值,如果存在,则改写建对应的值;不存在,则创建一个新建并赋值
dict1['x']=88 #则创建一个新建并赋值
dict1['f']=120 #则改写建对应的值
2.2字典的内置方法
#fromkeys() 创建并返回一个新字典,有两个参数:第一个参数是字典的键;第二个参数传入键对应的值。如果不提供,默认是None。
dict1= {}
dict1.fromkeys((1,2,3)) #{1:None,2:None,3:None}
dict2.fromkeys((1,2,3),"Number") #{1:'Number',2:'Number',3:'Number'} 注意该方法创建的字典,每个建的值都是参数的值
# keys()返回字典中的所有键,values()返回字典中所有的值,items()返回字典中所有的键和值
# get() 返回键对应的值。两个参数,第一个参数是键,第二个参数是字典中没有该键时返回的值默认是None。
dict1.get(32) dict1.get有")
#clear()清空一个字典
#copy()复制字典:
a={1:None,2:None,3:None}
b=a.copy() #b为一个新的字典
#pop()给定键弹出对应的值,popitem()弹出一个项
#setdefault()与get类似但找不到值时会自动添加
#update()更新字典
a={1:None,2:None,3:None}
a.update(4=2) #a={1:None,2:None,3:None,4:2}