一、Number数字
1.1 注意事项
Python支持int
、float
、bool
和complex
类型。
complex是复数类型a+bj
(或complex(a,b)
),a
表示实部,b
表示虚部,a
b
本身是float
类型。
Python使用变量时,无需声明变量。
a=3 # 自动声明为int
b=3.4 # 自动声明为float
a=3/4 # a的数据类型从int改成了float
Python除法/
总是返回一个浮点数,如果你想只返回整数部分,请使用//
。
7//2 # 返回3
7.0//2 # 返回3.0
Python支持幂运算:
5**2 # 5^2
Tips:在交互模式,和matlab一样的ans用下划线代替_
1.2 数学函数
内置函数 | 含义 |
---|---|
abs(x) | 绝对值 |
max(x1,x2,…xn) | 最大值 |
min(x1,x2,…xn) | 最小值 |
round(x,[n=0]) | 四舍五入小数点n位 |
math扩展 | 含义 |
---|---|
ceil(x) | 不小于x的最小整数 |
floor(x) | 不大于x的最小整数 |
fabs(x) | 绝对值 |
log(x[, base=e]) | base为底的对数 |
log2(x) | 2为底的x对数 |
log10(x) | 10为底的x对数 |
sqrt(x) | 平方根 |
(小数,整数)=modf(x) | 整数和小数部分 |
acos(x) | 反余弦 |
asin(x) | 反正弦 |
atan(x) | 反正切 |
atan2(y,x) | 反正切 |
cos(x) | 余弦 |
sin(x) | 正弦 |
tan(x) | 正切 |
degrees(x) | 弧度转角度 |
radians(x) | 角度转弧度 |
pi | 圆周率 |
e | 自然数e |
math库中还有其他的函数,需要时可以查阅:https://docs.python.org/3/library/math.html
random扩展 | 含义 |
---|---|
choice(seq) | 从序列中随机选择一个元素 |
randrang([start] stop [,step=1]) | 生成的range中选择一个元素 |
random() | 随机生成一个实数,范围[0,1) |
seed([x]) | 随机种子 |
shuffle(lst) | 打乱序列 |
uniform(x,y) | [x,y]随机实数 |
二、字符串
2.1 注意事项
Python有字符串型但是没有字符型。定义也和大多数语言一样:
var1 = "Hello"
var2 = 'Hello'
var3 = """
这是一个可以
换行的
字符串
"""
上面有三种类型表示字符串内容,分别是单引号、双引号和三引号。如果没有转义单引号双引号都可以,如果有双引号特殊字符,那你用单引号可以不用多双引号进行转义,同理,如果你用单引号,双引号就无需转义[1]。
2.2 运算
操作符 | 含义 |
---|---|
+ | 连接符号左右字符串 |
* | 重复左字符串 |
[n] | 从0开始数第n个 |
[a:b] | 区间[a,b)的所有有序字符串 |
in | 左字符是真的在右字符串里面吗? |
not in | 左字符是真的不在右字符串里面吗? |
重点来看中括号的切片操作:对于字符串,我们用中括号就可以选取:
和C语言一样下标从0开始。你可以选择某个元素:
str[2] # 结果是n
str[-5] # 结果是u
也可以按范围选取:
str[:] # 全部
str[0:5] # [0,5)部分即Runnoo
str[0:] # 从零开始到最后一个元素下表(也就是6)
str[:6] # [0,5]所有字符
2.3 格式化字符串
格式如下:
" %格式化符号 %格式化符号" % (数据,数据)
看个具体的例子:
name="Fred"
"Hello %s!"%(name)
复杂一点的有:
name="Fred"
age=2
"Hello %s I am %d year old !"%(name,age)
格式化符号与C语言一致。
2.4
方法 | 含义 |
---|---|
capitalize | 首字母大写 |
center(width) | 长度width居中字符串 |
count(str,beg=0,end=len(string)) | str在范围内出现的次数 |
endwith(obj,beg=0,end=len(string)) | 检查字符串是否以obj结尾 |
expandtabs(tabsize=8) | 字符串tab符号转为空格 |
find(str,beg=0,end=len(string)) | str是否在指定范围内,如果在返回引索,否则-1 |
format() | %[(name)][flags][width].[precision]typecode |
index(str,beg=0,end=len(string)) | str是否在指定范围内,如果在返回引索,否则返回一异常 |
isalnum() | 是否为字母后者数字 |
isalpha() | 是否为字母或者中文 |
isdigit() | 是否为数字 |
isupper | 是否全部大写 |
islower() | 字母是否都为小写 |
isnumeric() | 是否只包含数字 |
isspace() | 是否为空格 |
istitle() | 是否为标题化的 |
s1.join(seq) | 以s1作为分隔的序列合并成一个 |
#!/usr/bin/python3
s1 = "-"
s2 = ""
seq = ("r", "u", "n", "o", "o", "b") # 字符串序列
print (s1.join( seq ))
print (s2.join( seq ))
三、序列(List)
序列里面,你可以随意放置任何你想要的类型,Python会帮你处理好这些数据的存放。
3.1 索引(Indexing)
在序列中每个元素都有编号,索引(Indexing),从下标1开始,可以是正数也可以是负数。0表示第一个,-1表示最后一个。
a=[1,2,3,4,5,6,7,8] # 如果存放同一个类型,那就和C里面的数组没有什么不一样了
b=['zhangsan',1223,'Beijing'] # 如果存放不同类型,这就是C/C++没有的了(外部库除外)
3.2 切片(Slicing)
切片的意思是把序列的一部分“切”出来。最一般的形式就是:
a=[5,4,46,42,45,62,27,8]
a[0:2] #下标0-2(不含右边)的元素组成的序列
a[-3:-1] #倒数第三个元素到最后一个
a[-3:] #直接省略了-1,默认到最后一个元素
a[:] #整个序列,所以为啥我不直接用a?不是更加方便
a[0:-1] #下标从0到倒数第一个-1小标, 但是a[-1:0]却没有这样的用法,
一个不怎么常用的操作,就是固定步长抽取序列中的元素:
a[0:-1:1] #从第一个开始,每隔一个抽取一个元素组成序列
a[8:0:-1] #从第八个元素开始(不含),从左往右开始,此时步长正负等于方向
3.3 序列相加、相乘
Python通过重载加号实现两个元素的拼接,星号后的数字代表重复多少次。
3.4 None 空列表 和初始化
表示一个什么都没有的值None,一个长度为0的列表a=[]
3.5 in 是否存在
a=[1,2,3,4,5,6,7,8]
print(1 in a) #True
3.6 min max len
最大、最小和长度都是内置的
3.7 list类
list('Hello') #返回元素分别是H e l l o的序列
3.7 切片赋值、等效删除、等效插入、方法删除
a=[1,2,3,4,5,6,7,8]
a[2]=4 # 将第三个元素改成了4
a[2:3]=[99,88] # 第3、4个元素变成了99 88
a[2:3]=[] # 等效删除,赋值为空不就行了
a[2:3]=[2,3,99] # 偷偷加了一个99进去
3.8 切片方法
此时,list是一个类,调用方法的符号为.
方法名称 | 含义 |
---|---|
append | 添加到末尾 |
clear | 清除所有元素 |
copy | 深拷贝 |
count(ele) | 统计ele出现了多少次 |
extend | 扩展序列 |
index(ele) | 返回某个元素的第一次出现的下标 |
insert(a,b,c,d) | 插入一些元素,注意元素可以不同类型 |
pop | 弹出 |
remove | 删除某个元素 |
reverse | 反序 |
sort | 排序 |
a=[1,2,3]
b=a
b[1]=4
>>>a
[1,4,3] # 一般的赋值其实是深拷贝,拷贝的是指针,这一点要注意
注意区分+
拼接
a=[1,2,3]
b=[4,5,6]
a+b #
这个比较实用,C++可要进行遍历,写一堆东西
a=[1,2,3,4,5,6,7,8]
print(a.index(8)) # 打印7
注意sort不会改变原来序列
a=[3,4,1,7]
b=a.sort() # 不行,b和a都指向同一个区域,排序会乱掉
d=[3,3,4,5,5,6,8,7,8,99]
gt4=[ele for ele in d if ele>4]
## 创建
a=[3,4,5,6,7] # 纯数字
b=['a','b',5,8,'ii'] # 字符和数字混合
c=[a,b,'ddd'] # 嵌套
aa=d[2:5]
aa=[887,888,889]
## 切片是针对序列型对象的一种高级引索的方法,普通的引索只能给出一个对应元素
## 切片是利用精湛的刀工选出自己想要的部分并将其拼在一起
## ref:https://blog.csdn.net/Zombie_QP/article/details/125063501
## 基本语法 序列对象[起点:终点:步长],注意是左闭右开,步长默认为1
## 其中大多数东西都可以省略,如
## d[::] 省略起点终点和步长 d[:] 起点终点步长和冒号,你可以只给起点、终点和步长
## 你可以连续切片,虽然感觉没有什么用 a[0:8][2:5][-1]
## 负数表示倒数第几个
## 切片之后操作的是原序列本身,如果不想这么做,可以拷贝到另一个序列中
## 泛型在list上的应用
## list = [i for i in range(5) if i>3]
## list也有很多内置的方法
[1] https://www.zhihu.com/question/59337505
[2] https://www.runoob.com/python3/python3-string.html