前言
自己用的学习笔记,只有C的基础,毕设需要用到python,留学习笔记,整理自b站视频
b站学习视频
于2020.02.13
基础操作
设置
字体设置为consolas比较好看
变量和数据类型
第一印象感觉python和C语言其实差不多,感觉不太习惯的是不用花括号,而用了缩进表示语句间关系,所以要严格把握缩进否则会报错(强迫症患者福音),同时也能避免一些忘记加花括号引起的错误。
一些使用规则汇总
设置变量不可用数字开头
X,y =y,x可交换xy
Alt+P复制上一句代码
双引号单引号,转义字符
Print(r“转义字符无效”)
若要换行,且程序没有写完,在末尾加\,即为\n\,三个双引号、单引号也能实现
数字加引号,相加可成为字符串拼接
字符串Print(“转义字符无效”*3000)打印3000遍
“”” 注释”””,或者加#号
大于等于号中间不能打空格
If,else:else后面应该加:while:
Ctrl+c停止循环
Break跳出循环;continue跳出本循环进行下一循环
Help docs 搜模块用法,import random载入模块
Python无自增运算
5e-05科学计数法 复数1+5j
Divmod(2,3)求两数的商和余数
常用函数bool为0则false
短路原则,or and
运算符优先级
assert断言,检查出错点
type(查数据类型)
循环结构
for循环:依次打出num中的文字并每个后面加一空格隔开
for 目标 in 表达式
例子:
for i in num:
print(i,end=’ ')
range(2,5,1)生成2,,3,4,间隔为1
列表
基础操作
基础操作 |
---|
member=[1,2,3,4] |
member.append(5)列表后加一元素5 |
member.extend([6,7])同事插入多个元素在末尾 |
member.insert(0,9)将9插入到第一个 |
len(member)列表长度 |
列表元素替换
列表元素替换 |
---|
temp=member[0] |
member[0]=member[1] |
member[1]=temp |
列表元素删除
列表元素删除 |
---|
member.remove(1)没有该值则报错 |
del member[1]删除第二个,不带参数则全删 |
num=member.pop()列表最后一个值出栈,并赋给num,在()内填数字可具体出某一位值 |
列表部分输出
列表部分输出 |
---|
member[0:3]表示0,1,2位的列表值 |
[:4]从头开始 |
[:]输出所有 |
列表常用操作符
列表常用操作符 |
---|
比大小 |
list1 = [123] list2 = [456] list1>list2 false 列表较长先比首项 可使用 and or 等运算符 |
list4 = list1 + list2 两个列表拼接,但不能直接+2,+号两边必须数据类型相同 |
list33或list3=3 列表内容复制3遍 |
123 (not) in list3[第几位,也可不填] ture元素123是否在list3中 |
dir(list)与list有关的函数 |
count(该元素出现次数),index(该元素出现位置,可限定范围),reverse(交换位置),sort(数字排队) |
list7=list6[:]完全拷贝给7,7成为独立列表不受影响 list8=list6,8与6完全等同,随后对6进行操作8也会变化 |
元组
元组 |
---|
tuple = (1,2,3,4,5,6,7,8) >>tuple[1] >>2 |
元组使用方法与列表相似 tuple2=tuple[5:] |
元组是否为元组取决于逗号 tuple=(1)不是元组 tuple=1,2,3、tuple=()是元组、空元组 |
8*(8)=64;8*(8,)=(8,8,8,8,8,8,8,8)} |
插入 temp=(‘he’,‘ha’,‘oo’) temp=temp[:1]+(pp)+temp[1:] 新的temp的ha后多了pp元素,而老的temp还存在,不久就会被消灭。元组比列表的数据更隐蔽安全 |
字符串
str = ‘i love you’
str[:6]>>‘i love’
也可插入字符,与列表相同
相关函数 | 用法 |
---|---|
str.capitalize() | 首字母大写 |
casefold() | 全部小写 |
center(width) | 将字符串居中,并使用空格填充至长度width的新字符串 |
format() | 位置参数:"{0} love {1}".format(“i”,“you”)>>'i love you’ 关键字参数:"{a} love {b}".format(a=“i”,b=“you”) |
字符串格式化符号含义及转义字符含义
字符串格式化符号含义:%c:’%c’ % 97 >>‘a’,%s,%d,%s等
格式化操作辅助命令:m.n 宽度.小数点位数、-左对齐、#十六进制前显示0x
字符串转义字符:\
序列
列表、元组、字符串统称为序列,共同点:
1、都可以通过索引得到每一个元素
2、默认索引值总是从0开始
3、可以通过分片的方法得到一个范围内的元素的集合
4、有很多共同的操作符(重复、拼接、成员关系)
相关函数:
1、使用list()函数可将元组转化为列表,b = list(b)
2、max():找最大值
3、list(reverse(num))翻转列表num
4、a=[1,2],b=[3,4,5],list(zip(a,b))>>[(1,3),(2,4)]
函数
定义函数
例1
def myfunction(name)://两个参数的话用逗号隔开即可,参数可任意形式
print(name+'函数定义')
使用:
myfunction(‘第一个’)
屏幕上打出“第一个函数定义”
例2
def add(num1,num2):
return(num1 + num2)
效果:
print(add(5,6))
11
函数文档
区别形参实参:
形参:定义函数时,括号里的name(见例1)
实参:调用函数时,括号里的值
def myfunction(name)://两个参数的话用逗号隔开即可,参数可任意形式
'文档定义内容'
print(name+'函数定义')
当输入>>>myfunction.doc
结果显示:‘文档定义内容’
或输入print.doc,help(print),会出现函数介绍,让别人更好理解
关键字参数
如例2,在调用函数时,add(num1=1,num2=2),防止参数写反的情况,在遇到大型项目时使更改参数更加方便。
默认参数
如例2,在函数定义时直接给num1,num2赋值
收集参数
def test(*params,exp):
print('参数的长度是:',len(params),exp);
print('第二个参数是:',params[1]);
调用函数>>>test(1,‘哈哈’,2,3,exp=4)
结果:参数的长度是:4 4
第二个参数是:哈哈
函数返回值
与C语言不同,python可以有多个返回值,只需要在函数的renturn[1,2,3]设置一个列表即可或不加中括号,直接为一个元组
变量的作用域
局部变量:在函数内定义的参数
全局变量:在函数外定义的参数,可以在函数内调用,但不要在函数内赋值,赋值python会自动创造一个同名的局部变量,最后数值可能出错
global关键字
在函数内使用全局变量,由于python的shadowing机制,会自动忽略此参数赋值操作,需要global+全局变量在函数中才能正常使用
嵌套函数
def fun1():
print('fun1被调用')
def fun2():
print('fun2被调用')
fun2()
函数中嵌套的函数只能在该函数中起作用,不能被单独调用
闭包
较难理解
def funx(x):
def funy(y)
return x * y
return funy
调用效果
》》》i = funx(8)
》》》type(i)
i为function格式
》》》i(5)
40
或者
》》》funx(8)(5)
40
新手常错
def fun1():
x = 5
def fun2():
x *= x
return x
return fun2()
此时fun2中的x不被执行,情况类似上一条,在python3之后可以解决,加一行代码在fun2里,nonlocal+参数名,即可强制改成全局变量
lambda表达式
示范例子(两种方法结果相同,但lambda方法会被回收)
def add(x,y):
return x + y
》》》add(3,4)
7
lambda x, y : x + y
g = lambda x , y : x + y
》》》g(3,4)
7
lambda表达式作用
python写脚本省定义函数时间,对于整个程序运行下来只调用一两次的函数不用费劲想函数的名字,简化代码的可读性,不用刻意去找函数定义
好用的BIF
1、过滤器filter()
筛选0-9之间的奇数
def odd(x):
return x % 2
temp = range(10)
show = filter(odd, temp)
list(show)
或者简短地
list(filter(lambda x : x % 2, range(10)))
2、映射(简单迭代)map()
list(map(lambda x : x * 2, range(10)))
[0,2,4,6,8,10,12,14,16,18]
递归
递归必有终止,与迭代比有风险
设置递归的层数
python3默认100层
import sys
sys.setrecursionlimit(1000000)
实用范例:阶乘,汉诺塔,二叉树