Python基础语法
一、运算符
a.比较运算符
运算符 | 意义 |
---|---|
x<y | 当x真的小于y时,返回真,否则返回假 |
b.数值运算符
运算符 | 意义 |
---|---|
x/y | 返回x/y的结果 |
x//y | 返回x除于y的整数部分 |
x%y | 返回x除于y的余数 |
abs(x) | 返回绝对值 |
int(x) | 转换为整形数 |
float(x) | 转化为浮点数 |
complex(re,im) | 定义复数 |
c.conjugate() | 返回复数的共轭复数 |
divmod(x,y) | 相当于x//y、x%y |
pow(x,y)或x**y | 返回x的y次方程序结构 |
二、程序结构
类别 | 特点 |
---|---|
顺序结构 | 代码执行顺序从头到尾依次执行 |
选择结构 | 使用if语句选择性执行代码,可分为单分支if和多分支if语句 |
循环结构 | 使用for、while来进行循环体的定义 |
三、异常处理
1、try-except结构
try:
处理代码
except Exception as e:
处理代码发生异常,在这里进行处理
2、try-except-finally结构
try:
print(1/0)
except Exception as e:
print("除0异常")
finally:
print("必须执行")
3、try-except-else结构
try:
print("正常代码")
except Exception as e:
print("将不会输出这句话")
else:
print("这句话将被输出")
4、try-except-else-finally结构
try:
print("没有异常")
except Exception as e:
print("不会输出")
else:
print("进入else")
finally:
print("必须输出")
四、函数
1、函数基本结构
def 函数名(参数):
函数体
return 返回值
2、参数结构
(一)、传统参数传递
a、无参传递
def func():
print("这是无参函数")
b、固定参数传递
def func(x):
pass
def func(x,y,z):
pass
(二)、默认参数传递
def func(x,y=100,z='hello'):
#参数默认值的设定,应当遵循从右到左原则
print(x,y,z)
(三)、未知参数个数传递
def func(name,*args):
print(name+"有以下雅称:")
for i in args:
print(i)
func("赵钱孙","猴子","毛毛","赵学霸")
(四)、带键参数传递
def func(**kwargs):
print(type(kwargs))
for i in kwargs:
print(i,kwargs[i])
func(aa=1,bb=2,cc=3)
print("---------")
func(x=1,y=2,z='hello')
3、回调函数
def func(fun,args):
fun(args)
def f1(x):
print("这是f1函数:",x)
def f2(x):
print("这是f2函数:",x)
func(f1,1)
func(f2,"hello")
4、函数的嵌套和递归
a、函数的递归
def fib(n):
if n<=2:
return 1;
else:
return fib(n-1)+fib(n-2)
b、函数的嵌套
def args_input():
#定义输入函数
try:
a = float(input("输入a:"))
b = float(input("输入b:"))
c = float(input("输入c:"))
return a,b,c
def get_delta(a,b,c):
#计算delta
return b**2-4*a*c
def slove():
a,b,c = args_input()
delta = get_delta(a,b,c)
if delta<0:
print("方程无解")
elif delta==0:
x = b/(-2*a)
print("x=",x)
else:
x1=(b+delta**0.5)/(-2*a)
x2=(b-delta**0.5)/(-2*a)
print("x1=",x1)
print("x2=",x2)
def main():
slove()
if __name__ == '__main__':
main()
5、闭包
- 闭包:将函数作为返回值返回
def func():
res = []
def put(x):
res.append(x)
def get():
return res
def out(x):
res.remove(x)
return put,get,out
p,g ,o= func()
p(1)
p(2)
print("当前res值:",g())
p(3)
p(4)
print("当前res值:",g())
o(4)
print("当前res的值:",g())
6、匿名函数lambda
- 类似于C++的#define定义
f = lambda x,y:x+y
print(f(2,3))
print((lambda x,y:x**2+y**2)(3,4))
7、关键字yield
- yeild关键字可以将函数执行的中间结果返回但不结束程序。
def func(n):
i = 0
while i<n:
yield i
i += 1
for i in func(10):
print(i)
Python数据结构
一、列表
- list,可作为栈(先进后出表)、队列(先进先出表)的等使用,定义形式:变量名 = [……],例如:
s = [1,2,3,4,5]
- 想要获取列表中的元素可以使用如下形式:变量名[下标值]来获取,使用原则如C++的数组。
1、list常用函数
函数名 | 作用 |
---|---|
list.append(x) | 将元素x追加到列表尾部 |
list.extend(L) | 将列表L中的所有元素追加到列表尾部形成新列表 |
list.insert(i,x) | 在列表index为i的位置插入x元素 |
list.remove(x) | 将列表中第一个为x的元素移除,若不存在x元素将引发一个异常 |
list.pop(i) | 删除index为i的元素,并将删除元素显示。若不指定i,则默认弹出最后一个元素 |
list.clear() | 清空列表 |
list.index(x) | 返回第一个x元素的位置,若不存在x,则会报错 |
list.count(x) | 统计列表中x元素的个数 |
list.reverse() | 将列表反向排列 |
list.sort() | 将列表从小到大排序。如需要从大到小排序,则用list.sort(reverse=True)表示 |
list.copy() | 返回列表的副本 |
二、元组(tuple)
-
定义形式
t=(1,2,3)
-
取值方式与列表相似,与列表不同的是:元组中的元素一旦确定就无法更改
tuple.count(x) #计算x在tuple中出现次数 tuple.index(x) #计算第一个x元素的位置
三、集合(set)
-
定义形式
s={1,2,3,35,2}
-
集合不能保存重复的数据,即具有过滤重复数据的功能,对于元组或者数组来说,可以使用set函数来去除重复的数据,如下:
>>> L=[1,1,1,2,2,2,3,3,3,4,4,4,5,5,5] >>> T=5,5,5,6,6,6,7,7,7,8,8,8,9,9,9 >>> SL=set(L) >>> ST=set(T) >>> L [1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 4, 4, 5, 5, 5] >>> SL {1, 2, 3, 4, 5} >>> T (5, 5, 5, 6, 6, 6, 7, 7, 7, 8, 8, 8, 9, 9, 9) >>> ST {5, 6, 7, 8, 9}
-
注意:因为set中的元素是无序的,因此不能用set[i]的方式来获取元素
集合的操作
操作符或函数 | 意义 |
---|---|
x in S | 如果S中包含x元素,则返回True,否则返回False |
x not in S | 如果S中不包含x元素,则返回True,否则返回False |
S+T | 链接S与T,返回连接后的新的集合类 |
S*n | 将S延长自身n次 |
len (S) | 返回S的长度 |
四、字典
-
定义形式
d={key:value}
-
字典,又称为键值对,字典的每一项都由一个key和value,key和value之间用“:”隔开,二字典的每一项用“,”隔开;值得注意的是:字典的key必须唯一,不能重复 字典的取值方式:d[key]
>>> d={1:10,2:25,'a':14,5:"hello"} >>> d[2] 25 >>> d['a'] 14 >>> d[5] 'hello'
字典的操作
>>> dc=d.copy() #字典的复制
>>> dc
{1: 10, 2: 25, 'a': 14, 5: 'hello'}
>>> dc.clear() #字典的清除
>>> dc
{}
>>> d.items() #获取字典的项列表
dict_items([(1, 10), (2, 25), ('a', 14), (5, 'hello')])
>>> d.keys() #获取字典的key列表
dict_keys([1, 2, 'a', 5])
>>> d.values() #获取字典的value列表
dict_values([10, 25, 14, 'hello'])
>>> d.pop(1) #弹出key=1的项
10
>>> d
{2: 25, 'a': 14, 5: 'hello'}
-
字典不能用“*“连接
-
字典的迭代
>>> d={1:2,3:4,'a':'2sd','er':34} >>> for i in d: #利用循环进行迭代 print(i,d[i]) 1 2 3 4 a 2sd er 34 >>> i=iter(d) #利用迭代器函数iter()进行迭代 >>> k=next(i) >>> k,d[k] (1, 2) >>> k=next(i) >>> k,d[k] (3, 4)
list、tuple和set的共有操作
-
这三种数据结构对于求长度、求最小值、求最大值和求和操作,调用的函数是一样的
>>> L=[1,2,3,4,5] >>> T=1,2,3,4,5 >>> S={1,2,3,4,5} >>> len(L),len(T),len(S) #求长度 (5, 5, 5) >>> min(L),min(T),min(S) #求最小值 (1, 1, 1) >>> max(L),max(T),max(S) #求最大值 (5, 5, 5) >>> sum(L),sum(T),sum(T) #求和 (15, 15, 15)
-
迭代
>>> for i in L: #利用循环进行迭代 print(i) 1 2 3 4 5 ------------ >>> i=iter(L) #利用iter()进行迭代 >>> next(i) 1 >>> next(i) 2 >>> next(i) 3
五、3个函数(map、filter、reduce)
1、遍历函数(map)
-
map函数用于遍历序列,对序列中的每个元素进行操作,最终获取型的序列:
>>> L=[1,2,3,4,5] >>> new_list=map(lambda a:a+100,L) >>> list(new_list) [101, 102, 103, 104, 10]
2、筛选函数(filter)
-
filter函数用于对序列中的元素进行筛选,最终获取符合条件的序列。
>>> l=[100,11,20,5,60,29] >>> new_l=filter(lambda x:x>22,l) >>> list(new_l) [100, 60, 29]
3、累计函数(reduce)
-
reduce函数用于对序列内的所有元素进行累计操作:
>>> from functools import reduce #从functools模块倒入reduce函数 >>> li = [11,22,33] >>> reduce(lambda arg1,arg2:arg1+arg2,li) 66 #reduce函数的第一个参数是有两个参数的函数,即函数必须有两个参数 #reduce的第二个参数是将要循环的序列 #reduce的第三个参数是初始值 >>> li.append(44) >>> reduce(lambda arg1,arg2:arg1+arg2,li) 110 >>> reduce(lambda arg1,arg2:arg1+arg2,li,100) 210