Python基础(一)基本类型

一、Number数字

1.1 注意事项

Python支持intfloatboolcomplex类型。

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

Python基础(一)基本类型_第1张图片

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 左字符是真的不在右字符串里面吗?

重点来看中括号的切片操作:对于字符串,我们用中括号就可以选取:
Python基础(一)基本类型_第2张图片
和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 list成员方法

方法 含义
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

你可能感兴趣的:(python,matlab,算法)