您的位置:首页 > 理论基础 > 数据结构算法

python基础语法和基本数据结构

2019-05-19 16:25 141 查看

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 =
20000
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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: