一、python基础
数据类型和变量
- 整型(int):与数学中的整数理解相同,在python中没有范围限制
- 浮点型(float):与数学中小数理解相同,在python中有大小限制,限制数量级较大,正常情况可忽略。浮点型会出现误差值,例如:要求表示0.3,实际数值不会是0.3,只会无限趋近0.3.则将两个浮点数比较大小可能会存在错误。
- 字符串(str):用单引号、双引号、三引号(多行内容时用)引起来的内容叫字符串。
- 布尔值:0 or 1(True or False)
- 变量:与数学中的变量相似,变量能赋的值范围更广。
字符串和编码
几种编码
- ASCII码:最早的编码形式,编码127个字符,有大小写字母、数字,其他特殊字符。
- GB2312:在ASCII码的字符基础上把中文加进去。
- Unicode:因为各个国家的基础字符和字符标准不同,在ASCII码基础上产生各国标准编码,这样容易产生乱码。Unicode则是所有的编码的集合,解决了各个中信息传递中编码形式不同导致乱码的问题。
- UTF-8:在 Unicode基础上为了节约存储空间弹性的将每个字符编码成1-6个字节。
字符串的格式化
1、最初的格式化
>>>print("每天学习python%d个小时,每天思考python问题%d次"%(2,3))
每天学习python2个小时,每天思考python问题3次
2、最近流行的格式化(二级题用到的)
format方法的使用:<模板字符串>.format(<逗号分隔的参数>)
>>>print("每天学习python{0}个小时,每天思考python问题{1}次".format(2,3))
每天学习python2个小时,每天思考python问题3次
使用list和tuple
list
- list:列表,可以存储任何基本的数据,一般用"[]"将元素括起来,列表中的元素之间用逗号隔开。
- 列表的操作函数:
>>>list1=[1,2,3,"123",4,5]
>>>list1.append(6)末尾添加元素6
>>>lsit1.insert(7,7)在下标为7的位置添加7
>>>list1.pop()删除末尾元素
>>>list1.pop(6)删除下标为6位置的元素
>>>len(list1)计算列表元素个数
tuple
- 元组,与列表很类似但是元组一旦初始化后不能修改。表示形式用"()"括起来元素用逗号隔开
tuple1=(1,2,3)
tuple2=(1,)
- 当元组中元素可变时元组也“可变”
使用dict和set
dict
- 字典由键值对组成(key-value),用"{}"括起来每个键值对用逗号隔开
- 创建字典
dict1={}空字典
dict2={"小明":1,2:"小华"}
dict1["小明"]=1
list1=[("小明",1),(2,"小华")]
dict3=dict(list1)
dict4=dict(小明=1,小华=2)这种方法中key只能为中文和字母
list2=["香茗","小华"]
list3=[1,2]
dict5=dict(zip(list2,list3))
- 与字典相关的方法和函数
待检测键值 in dict1//检测字典键值是否有待检测键值
dict1.get(待检测键值,自定义value值)//若字典key中有待测键值,将相应value值输出,没有则输出自定义value值,自定义value值可不写。
set
- 集合,与数学上集合相似,python中的集合元素不可变,唯一。
- 集合的创建以及方法函数
list1=[1,2,3,3,4]
s1=set(list1)//创建集合
s2=set([2,3,4,5])
s1&s2//集合的交
s1|s2//集合的并
二、函数
定义函数
def Min(参数):
pass
//定义一个函数需要有def、函数名、参数(可选)、函数代码块。
//函数返回多个值时实际返回的是一个以多个需要返回的值最为元素的元组。
函数参数
def Met(x)://x为位置参数(必选关键词),没有初始定义的参数
pass
def Met(x,n=2)://n为默认参数,当调用者不传递该参数的值为默认值,默认参数需要在必选参数之后,默认参数必须指向不变对象
pass
def Met(*x)://x为可变参数,可以传入多个参数(这些参数会自动组装成一个元组)或在可变数据类型的变量前加*将其变成可变参数
pass
def Met(x,**kw)://kw为关键字参数,会自动组装成一个字典
pass
//命名关键词参数
//参数组合:参数顺序,必选参数、默认参数、可变参数、命名关键字参数和关键字参数。
三、高级特性
切片
- 切片操作能截取一定范围的数据,适用于列表、元组、字符串。
- 切片操作演示
>>>list1=[1,2,3,4,5]
>>>list1[:3]
[1,2,3]
>>>tuple1=(1,2,3,4,5)
>>>tuple1[:3]
(1,2,3)
>>>s="12345"
>>>s[:3]
"123"
迭代
- 用for来遍历一个数据(可迭代的)
- 可迭代对象,列表、元组、字符串、字典
>>>list1=[1,2,3,4]
>>>tuple1=(1,2,3,4)
>>>s='1234'
>>>dict1={"A":1,"B":2,"C":3,"D":4}
>>>for i in list1:
print(i)
i依次为1、2、3、4
>>>for i in tuple1:
print(i)
i依次为1、2、3、4
>>>for i in s:
print(i)
i依次为'1'、'2'、'3'、'4'
>>>for i in dict1:
print(i)
i依次为'A'、'B'、'C'、'D'
>>>for i in dict1.values():
print(i)
i依次为1、2、3、4
>>>for i,j in dict1.items():
print(i,j)
列表生成式
- 生成列表的快捷方法。
[结果表达式for 迭代变量 in range(范围) if筛选条件]
>>>[x*x for x in range(5) if x%2==0]
[0,4,16]
>>>[x*x if x%2==0 else x for x in range(5)]
[0, 1, 4, 3, 16]
生成器(待补充)
迭代器(待补充)
四、函数式编程
高阶函数
map和reduce
- map(f,x),map函数需要两个参数,f是目标函数,函数接收一个参数,x是一个可迭代对象。最终返回一个以遍历x代入f得到的结果为数据的迭代器。
>>>def f(x):
return x*x
>>>list1=[1,2,3,4]
>>>list(map(f,list1))
[1,4,9,16]
- reduce(f,x),reduce函数需要两个参数,f是目标函数,函数接收两个参数,x是由map函数产生的迭代器或可迭代对象。迭代器的每个数据依次代入函数,其结果与其他相邻数据又作为函数的两个参数,按照这种规律知道所有数据全部遍历完。
from functools import reduce
def f(x,y):
return x+y
list1=[1,2,3,4]
def f1(x):
return x*x
reduce(f,map(f1,list1))
filter
- filter(f,x),f是用来规定数据特点的函数,用来筛选数据。x是可迭代对象或迭代器。filter会将进入函数后返回值为true的所有数据构成一个迭代器。
def f(x):
return x%2==0
def f1(x):
return x+1
list1=[1,2,3,4,5]
list(filter(f,list1))
list(filter(f,map(f1,list1)))
sorted
- sorted(待排序序列,key=排序的规则函数,reverse=True or False-按从大(小)到小(大)),返回已排好序的序列。
list1=[1,2,3,-1,-5,-9]
sorted(list1)
sorted(list1,key=abs)
匿名函数
- 没有确切函数名的简单函数
f=lambda x:x+2
f(1)
装饰器(待补充)
偏函数
- 使用偏函数可以创建新函数,新函数可以固定元素函数的一部分参数。
import functools
int2 = functools.partial(int, base=2)//将二进制变成十进制
六、 模块
- 自定义模块的例子
#!/usr/bin/env python3(这一行注释可以让该模块直接在Unix/Linux/Mac运行)
# -*- coding: utf-8 -*-(这一行注释表明该.py文件的编码形式)
def fa():
pass
if __name__=='__main__':
fa()
- 模块的导入方式
import 模块名
from 库名 import 方法名
form 库名 import*
-
第三方库的安装和卸载
用pip方法安装和卸载第三方库 -
python内置函数(方法)
菜鸟教程整理的内置函数表