Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。等号(=)用来给变量赋值。等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:
count = 10
name = "python"
price = 12.5
也支持同时为多个变量赋值。例如
a = b = c = 1
e, f, g = 1, 2, 3
如果想删除一个变量,可以使用del
,删除后将不能在进行调用,例如
a = b = c = 1
del a, b
Python的数据类型
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- dictionary(字典)
不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组)
,可变数据(3个):List(列表)、Dictionary(字典)、Set(集合)
一、Number
Python 数字数据类型用于存储数值。数据类型是不允许改变的,这就意味着如果改变数字数据类型的值,将重新分配内存空间
以下实例在变量赋值时候Number对象将被创建:
a = 1
b = 2
1、Python支持三种不同的数值类型
- 整型(int):通常被称为是整型或整数,是正或负整数,不带小数点。Python3 整型是没有限制大小的,可以当作 Long 类型使用,所以 Python3 没有 Python2 的 Long 类型
- 浮点型(float):浮点型由整数部分与小数部分组成,浮点型也可以使用科学计数法表示(2.5e2 = 2.5 x 102 = 250)
- 复数(complex):复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
2、Python数字类型转换
有时候需要把数据内置的类型转换,数据类型转换,只需要将数据类型作为函数名即可
- int(a):将a转换为一个整数,如果是小数,会去掉小数位
- float(a):将a转换到一个浮点数
- complex(a):将a转换到一个复数,实数部分为a,虚数部分为0
- complex(a,b):将a和b转换到一个复数,实数部分为a,虚数部分为b,a和b是数字表达式
a = 12.6
print(int(a))
# 输出12
3、数字运算
这里只给一些使用例子,对运算符不熟悉的可以前往查看之前的文章:Python3入门(二)运算符
a = 2
b = 1
c = 1.5
# 输出结果:3
print(a + b)
# 输出结果:2
print(a * b)
# 输出结果:2.0
print(a / b)
# 输出结果:2
print(a // b)
# 输出结果:2
print(a ** b)
# 输出结果:4.0
print(a * c + b)
# 输出结果:1.0
print(a // c)
除法/
总是返回一个浮点数,如果想去掉可能的小数,考虑使用//
,但是,//得到的不一定是整数
,要根据除数和被除数的类型而定,上面的给出了例子;不同的数据类型之间混合运算,结果会转换为浮点数
4、数学函数
函数 | 描述 |
---|---|
abs(a) | 返回数字a的绝对值,如abs(-1)返回1 |
ceil(a) | 返回数字的上入整数,如math.ceil(4.1)返回5 |
exp(a) | 返回e的a次幂,如math.exp(1)返回2.718281828459045 |
fabs(a) | 返回数字的绝对值,如math.fabs(-1)返回1.0 |
floor(a) | 返回数字的下舍整数,如math.floor(4.6)返回4 |
log(a) | 对数函数,如math.log(4,2)返回2.0 |
max(a,b,c...) | 返回给定参数的最大值,参数可以为序列 |
min(a,b,c...) | 返回给定参数的最小值,参数可以为序列 |
modf(a) | 返回a的整数部分和小数部分,两部分的数值符号与a相同,整数部分以浮点数表示 |
pow(a,b) | a**b后的值 |
round(a,b) | 返回a的四舍五入的值,b可以不设置,如果设置,表示舍入到小数的几位 |
sqrt(a) | 返回a的平方根 |
5、随机数函数
随机数可以用于数学,游戏,安全等领域中,还经常被嵌入到算法中,用以提高算法效率,并提高程序的安全性。Python包含以下常用随机数函数
函数 | 描述 |
---|---|
choice(seq) | 从序列的元素中随机挑选一个元素,比如random.choice(range(10)),从0到9中随机挑选一个整数。 |
randrange ([start], stop, [step]) | 从指定范围内,按指定基数递增的集合中获取一个随机数,基数缺省值为1 |
random() | 随机生成下一个实数,它在[0,1)范围内 |
seed([x]) | 改变随机数生成器的种子seed。如果你不了解其原理,你不必特别去设定seed,Python会帮你选择seed。 |
shuffle(lst) | 将序列的所有元素随机排序 |
uniform(x, y) | 随机生成下一个实数,它在[x,y]范围内 |
6、三角函数
函数 | 描述 |
---|---|
acos(x) | 返回x的反余弦弧度值 |
asin(x) | 返回x的反正弦弧度值 |
atan(x) | 返回x的反正切弧度值 |
atan2(y, x) | 返回给定的 X 及 Y 坐标值的反正切值 |
cos(x) | 返回x的弧度的余弦值 |
hypot(x, y) | 返回欧几里德范数 sqrt(xx + yy) |
sin(x) | 返回的x弧度的正弦值 |
tan(x) | 返回x弧度的正切值 |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 |
radians(x) | 将角度转换为弧度 |
7、数学常量
函数 | 描述 |
---|---|
pi | 数学常量 pi(圆周率,一般以π来表示) |
e | 数学常量 e,e即自然常数(自然常数) |
二、String(字符串)
字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串
1、访问字符串
Python 不支持单字符类型,单字符在 Python 中也是作为一个字符串使用。Python 访问子字符串,可以使用方括号来截取字符串,如下
a = "hello"
b = "python"
# 输出:l
print(a[2])
# 输出:pyt
print(b[0: 3])
2、改变字符串
截取字符串的一部分并与其他字段拼接
a = "hillo"
b = "world"
# 输出hi world
print(a[0:2]+" "+b)
3、转义字符
转义字符 | 描述 |
---|---|
(行尾的时候) | 续行符 |
\ | 反斜杠符号 |
' | 单引号 |
" | 双引号 |
a | 响铃 |
b | 退格 |
000 | 空 |
n | 换行 |
v | 纵向制表符 |
t | 横向制表符 |
r | 回车 |
f | 换页 |
oyy | 八进制数,yy代表字符 |
xyy | 十六进制数,yy代表字符 |
other | 其他的字符以普通格式输出 |
4、字符串运算符
操作符 | 描述 |
---|---|
+ | 字符串品拼接 |
* | 重复输出字符串 |
[] | 通过索引获取字符串中字符 |
[a:b] | 截取字符串中一部分,a为开始下标,右为结束 |
in | 成员运算符,如果字符串中包含给定字符,返回True |
not in | 如果字符串中不包含给定字符,返回True |
r/R | 原始字符串 - 原始字符串:所有的字符串都是直接按照字面的意思来使用,没有转义特殊或不能打印的字符 |
5、字符串格式化
Python 支持格式化字符串的输出 。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个有字符串格式符 %s 的字符串中
# 输出:翠花你今天真好看
print("%s你今天真好看" % '翠花')
格式化符号
符号 | 描述 |
---|---|
%c | 格式化字符及其ASCII码 |
%d | 格式化整数 |
%s | 格式化字符串 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
格式化辅助指令
符号 | 功能 |
---|---|
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
在正数前面显示空格 | |
# | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
0 | 显示的数字前面填充'0'而不是默认的空格 |
% | '%%'输出一个单一的'%' |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
6、三引号
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符
s = """啦啦啦啦
啦啦啦啦啦啦
使用制表符
TAB(\t)
换行符[\n]
"""
print(s)
7、字符串内带函数
函数 | 描述 |
---|---|
capitalize() | 将字符串的第一个字符转换为大写 |
center(width, fillchar) | 返回一个指定的宽度 width 居中的字符串,fillchar 为填充的字符,默认为空格 |
count(str, beg= 0,end=len(string)) | 返回 str 在 string 里面出现的次数,如果 beg 或者 end 指定则返回指定范围内 str 出现的次数 |
bytes.decode(encoding="utf-8", errors="strict") | Python3 中没有 decode 方法,但我们可以使用 bytes 对象的 decode() 方法来解码给定的 bytes 对象,这个 bytes 对象可以由 str.encode() 来编码返回 |
encode(encoding='UTF-8',errors='strict') | 以 encoding 指定的编码格式编码字符串,如果出错默认报一个ValueError 的异常,除非 errors 指定的是'ignore'或者'replace' |
endswith(suffix, beg=0, end=len(string)) | 检查字符串是否以 obj 结束,如果beg 或者 end 指定则检查指定的范围内是否以 obj 结束,如果是,返回 True,否则返回 False |
expandtabs(tabsize=8) | 把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 |
find(str, beg=0, end=len(string)) | 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
index(str, beg=0, end=len(string)) | 跟find()方法一样,只不过如果str不在字符串中会报一个异常 |
isalnum() | 如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
isalpha() | 如果字符串至少有一个字符并且所有字符都是字母则返回 True, 否则返回 False |
isdigit() | 如果字符串只包含数字则返回 True 否则返回 False |
islower() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
isnumeric() | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
isspace() | 如果字符串中只包含空白,则返回 True,否则返回 False |
istitle() | 如果字符串是标题化的(见 title())则返回 True,否则返回 False |
isupper() | 如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
join(seq) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
len(string) | 返回字符串长度 |
ljust(width[, fillchar]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格 |
lower() | 转换字符串中所有大写字符为小写 |
lstrip() | 截掉字符串左边的空格或指定字符 |
maketrans() | 创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标 |
max(str) | 返回字符串 str 中最大的字母 |
min(str) | 返回字符串 str 中最小的字母 |
replace(old, new [, max]) | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次 |
rfind(str, beg=0,end=len(string)) | 类似于 find()函数,不过是从右边开始查找 |
rindex( str, beg=0, end=len(string)) | 类似于 index(),不过是从右边开始. |
rjust(width,[, fillchar]) | 返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
rstrip() | 删除字符串字符串末尾的空格 |
split(str="", num=string.count(str)) | num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
splitlines([keepends]) | 按照行('r', 'rn', n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符 |
startswith(substr, beg=0,end=len(string)) | 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查 |
strip([chars]) | 在字符串上执行 lstrip()和 rstrip() |
swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
title() | 返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
translate(table, deletechars="") | 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
upper() | 转换字符串中的小写字母为大写 |
zfill (width) | 返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
isdecimal() | 检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
三、列表
序列是Python中最基本的数据结构。序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推,
列表是最常用的Python数据类型,它可以作为一个方括号内的逗号分隔值出现。列表的数据项不需要具有相同的类型
list1 = ["nihao", 13, 123.22]
1、访问值
使用下标索引进行访问列表的值
list1 = ["nihao", 13, 123.22]
print(list1[0])
print(list1[0:3])
2、更新列表内的值
可以对列表进行修改或者更新,也可以append()向列表内增加
list1 = ["nihao", 13, 123.22]
list1[0] = 'no'
list1.append("hello")
# 输出:['no', 13, 123.22, 'hello']
print(list1)
3、删除列表元素
使用del语句来删除列表的元素
list1 = ["nihao", 13, 123.22]
del list1[0]
# 输出结果:[13, 123.22]
print(list1)
4、脚本操作符
表达式 | 描述 |
---|---|
len(list) | 返回列表长度 |
list1+list2 | 将两个列表组合 |
["hi"] * 2 | 重复,得到["hi","hi"] |
3 in list1 | 判断元素是否在列表里,返回True如果存在,反之False |
for x in list; print(x) | 迭代 |
5、截取和拼接
表达式 | 描述 |
---|---|
list[2] | 取列表第三个元素 |
list[-2] | 取右边开始第二个元素 |
list[1:] | 读取第二个元素开始后的所有元素 |
6、列表函数和方法
- 函数
函数 | 描述 |
---|---|
len(list) | 返回列表元素的个数 |
max(list) | 返回列表元素的最大值 |
min(list) | 返回列表元素的最小值 |
list(seq) | 将元素转换为列表 |
- 方法
方法 | 描述 |
---|---|
list.append(obj) | 在列表末尾添加新的对象 |
list.count(obj) | 统计某个元素在列表中出现的次数 |
list.extend(seq) | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index(obj) | 从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index, obj) | 将对象插入列表 |
list.pop([index=-1]) | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove(obj) | 移除列表中某个值的第一个匹配项 |
list.reverse() | 反向列表中元素 |
list.sort( key=None, reverse=False) | 对原列表进行排序 |
list.clear() | 清空列表 |
list.copy() | 复制列表 |
四、Tuple(元组)
Python 的元组与列表类似,不同之处在于元组的元素不能修改
, 元组使用小括号,列表使用方括号,元组与字符串类似,下标索引从0开始,可以进行截取,组合等。
tup1 = ("1", 2, 'hello')
元组中只包含一个元素时,需要在元素后面添加逗号,否则括号会被当作运算符使用
tup1 = ("1",)
1、访问元组
元组可以使用下标索引来访问元组中的值
tup1 = ("1", 2, 'hello')
print(tup1[1])
print(tup1[0:2])
2、修改元组
元组中的元素值不可以更改
,但是可以将多个元组组合
tup1 = ("1", 2, 'hello')
tup2 = (1,)
tup3 = tup1 + tup2
print(tup3)
# 输出:('1', 2, 'hello', 1)
3、删除元组
元组中的元素值是不允许删除的
,但是可以删除整个元组
tup1 = ("1", 2, 'hello')
del tup1
4、元组运算符
表达式 | 描述 |
---|---|
len(tup) | 返回元素个数 |
tup1+tup2 | 将两个元组组合 |
("hi") * 2 | 重复,得到("hi","hi") |
3 in tup1 | 判断元素是否在元组里,返回True如果存在,反之False |
for x in tup; print(x) | 迭代 |
5、元组截取
表达式 | 描述 |
---|---|
tup[2] | 读取元组的第三个元素 |
tup[-2] | 读取元素倒数第二个元素 |
tup[1:] | 读取元组从第二个元素开始的所有元素 |
6、元组的内置方法
方法 | 描述 |
---|---|
len(tup) | 返回元组的元素个数 |
max(tup) | 返回元组中最大的元素 |
min(tup) | 返回元组最小的元素 |
tuple(seq) | 将列表转为元组 |
五、字典
字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示
d = {"name": "test", "age": 12}
键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组
1、访问字典的值
把相应的键放入到方括号中,如下实例:
d = {"name": "test", "age": 12}
print(d["name"])
2、修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例
d = {"name": "test", "age": 12}
d["name"] = "test2"
d["city"] = "xiamen"
# 输出: test2
print(d["name"])
# 输出: xiamen
print(d["city"])
3、删除字典中的元素
能删单一的元素也能清空字典,清空只需一项操作。显示删除一个字典用del命令,如下实例
d = {"name": "test", "age": 12}
# 删除键"name"
del d["age"]
# 清空字典
d.clear()
# 删除字典
del d
4、键的特性
字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。两个重要的点需要记住:1、不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,2、键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行
5、内置函数和方法
- 函数
函数 | 描述 |
---|---|
len(dic) | 计算字典的键的个数 |
str(dic) | 将字典以字符串输出 |
type(variable) | 返回输入的变量类型,如果变量是字典,就返回字典类型 |
- 方法
方法 | 描述 |
---|---|
radiansdict.clear() | 删除字典内所有元素 |
radiansdict.copy() | 返回一个字典的浅复制 |
radiansdict.fromkeys() | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
radiansdict.get(key, default=None) | 返回指定键的值,如果值不在字典中返回default值 |
key in dict | 如果键在字典dict里返回true,否则返回false |
radiansdict.items() | 以列表返回可遍历的(键, 值) 元组数组 |
radiansdict.keys() | 返回一个迭代器,可以使用 list() 来转换为列表 |
radiansdict.setdefault(key, default=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
radiansdict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
radiansdict.values() | 返回一个迭代器,可以使用 list() 来转换为列表 |
pop(key[,default]) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值 |
popitem() | 随机返回并删除字典中的一对键和值(一般删除末尾对) |
六、集合
集合(set)是一个无序的不重复元素序列。可以使用大括号 { }
或者 set()
函数创建集合,注意:创建一个空集合必须用 set()
而不是 { },因为 { } 是用来创建一个空字典
set1 = {"val1", "val2"}
set2 = set("a")
1、集合的基本操作
-
a、添加元素,如果元素已存在,不做任何操作
set1.add("val3")
- b、移除元素
如果元素不存在,会发生错误
set1.remove("val1")
如果元素不存在,不会发生错误set1.discard("val4")
也可以随机set1.pop()
-
c、计算集合元素的个数
len(set)
-
d、清空集合
set.clear()
-
e、判断元素是否在集合中
val1 in set
2、集合内置所有方法
方法 | 描述 |
---|---|
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference update() | 移除集合中的元素,该集合在指定集合中也存在 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection update() | 删除集合中的元素,该元素在指定的集合中不存在 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False |
issubset() | 判断指定集合是否为该方法参数集合的子集 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
emove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
好了,本文到此就结束了,如发现有误可以评论留言,我会马上更改,欢迎大家关注哦~