主要是对自己学习做一个笔记整理,小白可直接绕道 廖雪峰的官方网站,进行学习。
#一般函数
print("str","str1") #打印函数 输出-> str str1
input("这里是输入提示:") #输入字符串 可用 int()强转
chr(20000) #转换字符
ord("一") #转化字符编码
bin(22) #二进制
oct(22) #八进制
hex(22) #十六进制
b'ABD'.decode('ascii') encode('ascii') # str与bytes互转 含有中文的str无法用ASCII编码,因为中文编码的范围超过了ASCII编码的范围,Python会报错。
len("asdc") #字符长度
PI #π 3.1415926...
range(5) #生成的序列是从0开始小于5的整数
abs(-100) #绝对值
max(2,3,1) #返回最大值
int(),str(),bool(),float() #类型转化
enumerate(['a','b','c']) #函数可以把一个list变成索引-元素对
"S".lower() #小写,非字符串使用会报错
isinstance("haha",str) #判断是否为字符串
#运算符
and #和
or #或
% : ('%2d-%.2f' % (200,33.232)) #格式化 %转义用%% 输出200-33.23 %d数字 %s字符串 %f浮点 %x十六进
& : set([1, 2, 3]) & set([2, 3, 4]) #交集 显示{2, 3}
| : set([1, 2, 3]) | set([2, 3, 4]) #并集 显示{1, 2, 3, 4}
#数据结构
list:#有序的集合
list = [1,2,3,4] #直接初始化
appen(5) #末尾添加元素
list[3] list[-2] #获取第四位元素 #倒数第二位 索引越界时 抛indexError
insert(1,'J') #指定索引插入元素
pop(2) #指定索引删除,不加索引为删除末尾
sort() #排序
tuple:#不可变的集合
tuple = (1,2,'a') #初始化 只有一个元素时要加逗号(1,) 空()
dict:#字典 键值对 等于Map 无序 通过key计算位置的算法称为哈希算法(Hash)
d = {'Michael': 95, 'Bob': 75, 'Tracy': 85} #初始化
d['Michael'] #查询Michael的值 赋值/修改直接用 = key不存在 报KeyError
d.get('Bob',-1) #get方法 key不存在返回 -1 或未指定时返回 None
'Tracy' in d #判断键是否存在 key是不可变对象 如str,int list是可变的
d.pop(key) #根据键删除
set:#key的集合不存放value 无序 不能重复,重复元素在set中自动被过滤
s = set([1, 2, 3]) #初始化
add(key) #增加
remove(key) #删除
#条件语句
if 条件1 and 条件2:
... #代码块
elif 条件3 or 条件4:
...
else :
...
#循环语句
for item in list: #将集合元素进行迭代
...
while 条件: #while循环
...
continue break #结束本轮循环 结束此循环
#函数 参数错误或类型不对报TypeError
def #声明定义函数的关键字
from abstest import my_abs #从abstest.py文件导入方法my_abs
def nop(): #pass 什么也不做 定义空函数或空代码块时
pass
def move(i,j):
return i+1,j+1
# -*- coding: utf-8 -*-
import math #导入内库
def quadratic(a, b, c): #计算 一元二次方程 ax^2 + bx + c = 0
d = b*b - 4*a*c
x1 = (math.sqrt(d) - b) / (2 * a) #math.sqrt 求平方根
x2 = (0 - math.sqrt(d) - b) / (2 * a)
return x1,x2 #可以返回多个值
x,y = quadratic(2, 3, 1)
def power(x,n=2):#计算次方值 n默认值等于2 必选参数在前,默认参数在后 否则Python的解释器会报错
s = 1
if n > 0:
while n > 0:
n = n - 1
s = s * x
elif n < 0:
while n < 0:
n = n + 1
s = s * (1 / x)
return s
def add_end(l=None)#默认参数必须指向不变对象! 若默认l = [],后续多次调用时 l会进行改变
if(l is None):
l = []
l.append("END")
return l
def calc(*arg):# *号,0-n个参数调用是一个可变参数,arg接收的是一个tuple
s = 0
for num in arg:
s = s + num * num
return s
print(calc(1,2,3)) # 调用时可使用多个参数 简化调用 calc([1,2,3]) \ calc((1,2,3)) ==> calc(1,2,3) tuple
def fun(a,v,**kw):# ** 0-n个参数0-n个参数 是关键字参数,kw接收的是一个dict。
pass
def fact(x) #阶乘 递归函数
if(x <= 0) :
return x
if x == 1 :
return 1
return x * fact(x-1)
## ===> fact(5)
## ===> 5 * fact(4)
## ===> 5 * (4 * fact(3))
## ===> 5 * (4 * (3 * fact(2)))
## ===> 5 * (4 * (3 * (2 * fact(1))))
## ===> 5 * (4 * (3 * (2 * 1)))
## ===> 5 * (4 * (3 * 2))
## ===> 5 * (4 * 6)
## ===> 5 * 24
## ===> 120
l = [1,2,3,4,5] l = “hello word” 字符串也能使用切片
l[start : end : interval] 返回数组中索引 = [start,end-1] 取不到end,interval为每间隔interval个取
l[1:5] => [2,3,4,5] ; l[-2:-1] => [4] ;l[0:0] => []
l[:3] => [1,2,3] ; l[-2:] => [4,5] ; l[:] => [1,2,3,4,5] 两端可省略
l[::2] => [1,3,5] 间隔2取一次
迭代类型 str,list,set,tuple,dict…
默认情况下,dict迭代的是key。
如果要迭代value,可以用for value in d.values(),
如果要同时迭代key和value,可以用for k, v in d.items()。检查是否可迭代,通过collections模块的Iterable类型判断
from collections import Iterable isinstance(obj, Iterable) # obj是否可迭代
多个变量,利用enumerate(list) 实现list用索引下标迭代
for x, y in [(1, 1), (2, 4), (3, 9)]: print(x, y) for i, v in enumerate([1,2,3,4]): print(i,v)
[结果 判断式 迭代式 过滤] 结果与迭代不可省略
[x if x > 6 else -x for x in range(1,11) if x%2 == 0] ---> [-2, -4, -6, 8, 10]
[结果 判断式 迭代式 过滤] 结果与迭代不可省略
g = (x if x > 6 else -x for x in range(1,11) if x%2 == 0) 与列表生成式括号不同
#直接用next调用
next(g) --> -2
next(g) --> -4
...
next(g) --> StopIteration 当无值时抛出异常
#使用循环
for n in g:
print(n)
# 带yield的生成器方法 generator function
def odd():
print('step 1')
yield 1
print('step 2')
yield(3)
print('step 3')
yield(5)
>>> o = odd() 有yield函数会变为generator
>>> next(o) 每次执行next,会返回yield出现的地方
step 1
1
>>> next(o)
step 2
3
>>> next(o)
step 3
5
>>> next(o)
Traceback (most recent call last):
File "" , line 1, in <module>
StopIteration
Iterator
集合数据类型,如list、tuple、dict、set、str等 是
Iterable
generator,包括生成器和带yield的generator function。 是Iterator
直接作用于for循环的对象统称为可迭代对象:Iterable
,可以被next()
函数调用并不断返回下一个值的对象称为迭代器:Iterator
它们表示一个惰性计算的序列;(需要被计算时才被调用)。
使用isinstance()
判断是否是Iterable、Iterator对象,iter()
将可迭代对象Iterable变为迭代器对象Iterator
from collections.abc import Iterator
isinstance((x for x in range(10)), Iterator) --> true
isinstance([], Iterator) --> false
isinstance((), Iterator) --> false
isinstance("abc", Iterator) --> false
isinstance(iter("abc"), Iterator) --> true
#for循环等价于
it = iter([1, 2, 3, 4, 5])
while True:
try:
# 获得下一个值:
x = next(it)
except StopIteration:
# 遇到StopIteration就退出循环
break