python中的变量不需要声明,只需要写变量名就可以,使用变量前要确保变量已被赋值,只有赋值后变量才被创建。
在python中,变量就是变量,没有类型,这里的“类型”是指,变量在内存中所值得对象的类型
python中 给一个变量赋值 用 “ = ” 进行赋值
“ = ” 左边为变量名,右边则是赋给变量的值
例:
PS:在实际开发中,变量名确保有实际意义,我文中没有用到 int string这类变量名是怕个别同学误会分不清类型和变量, 在python中只有变量名,没有类型
多个变量赋值
python中允许为多个变量赋值,
以上实例,根据变量名与赋值对应的坐标进行赋值
PS:一定要保证值得元素个数与变量个数相同,否则会抛出异常。如果是单一的字符串,则要保证字符串的长度与变量相等。在一个字符串对多个变量进行赋值时,字符串会被拆成字符数组进行赋值。
以上实例,创建一个字符串,从右到左,依次赋值,最终三个变量值相同
python中的标准数据类型
Python3 中有六个标准的数据类型:
- Number(数字)
- String(字符串)
- List(列表)
- Tuple(元组)
- Set(集合)
- Dictionary(字典)
Python3 的六个标准数据类型中:
- 不可变数据(3 个):Number(数字)、String(字符串)、Tuple(元组);
- 可变数据(3 个):List(列表)、Dictionary(字典)、Set(集合)。
不可变数据类型: 当该数据类型的对应变量的值发生了改变,那么它对应的内存地址也会发生改变,对于这种数据类型,就称不可变数据类型。
可变数据类型 :当该数据类型的对应变量的值发生了改变,那么它对应的内存地址不发生改变,对于这种数据类型,就称可变数据类型。
一、Number(数字)
python中整型类型包括 int bool (布尔) float 与complex(复数)
- int(整型) 在Python中 整型类型只有一个int,表示长整型
- bool (布尔) 参数为 True,False
- float (浮点数) 如1.2 , 2.3
- complex(复数) 如 1+1j ,1.1+2.1j
python 3.x 以上版本 长整型整数类型只有int一个
内置的type()方法用来查询当前变量的所属类型
例:
还可以使用isinstance来判断当前运行时类型
type与isinstance的区别
type()不会认为子类是一种父类类型。
isinstance()会认为子类是一种父类类型。
例:
python中bool是整数类型,是可以进行赋值和运算的,1为真,0位假
例:
运算符
a , b = 10 , 3 #下面实例使用的 a和b 则是上面这个变量 a = 10 ,b = 3
算术运算符 | 描述 | 实例 |
+ | 加 - 俩数相加 | a+b = 13 |
- | 减 - 俩数相减 | a - b = 7 |
* | 乘 - 俩数相乘 | a * b = 30 |
/ | 除 - 俩数相除 返回浮点数 | a / b = 3.33333333333 |
% | 取模 - 获取除法的余数 | a % b = 1 |
// | 取整除 - 获取最接近商的整数 | a // b = 3 |
** | 幂 - 返回 x 的 y 次幂 | a ** b = 1000 |
比较运算符 | 描述 | 实例 |
== | 等于 | a == b 结果False |
!= | 不等于 | a != b 结果True |
<= | 小于等于 | a <= b 结果False |
>= | 大于等于 | a >= b 结果True |
< | 小于 | a < b 结果False |
> | 大于 | a > b 结果True |
位运算符 | 描述 | 实例 |
& | 按位与运算符 :参与运算的两个值,如果两个相应位都为1,则该位的结果为1,否则为0 | a & b = 2 (详细解析看图1) |
| | 按位或运算符 :只要对应的二个二进位有一个为1时,结果位就为1。 | a | b = 11 (详细解析看图2) |
^ | 按位异或运算符 :当两对应的二进位相异时,结果为1 | a ^ b = 9 (详细解析看图3) |
~ | 按位取反运算符 :对数据的每个二进制位取反,即把1变为0,把0变为1 | ~a = -11 (详细解析看图4) |
<< | 左移运算符 :运算数的各二进位全部左移若干位,由"<<"右边的数指定移动的位数,高位丢弃,低位补0 | a << 2 = 40 (详细解析看图5) |
>> | 右移运算符 :运算数的各二进位全部右移若干位,由">>"右边的数指定移动的位数,高位补0,低位丢弃 | a >> 2 = 2 (详细解析看图6) |
a = 10 二进制表示为 0000 0110
b = 5 二进制表示为 0000 0011
图1
图2
图3
图4
图5
图6
赋值运算符 | 描述 | 实例 |
= | 普通的赋值运算符 | c = a + b c的值为13 |
+= | 加等于运算符 | a += b = 13 等于 a = a + b |
-= | 减等于运算符 | a -= b = 7 等于 a = a - b |
*= | 乘等于运算符 | a *= b = 30 等于 a = a * b |
/= | 除等于运算符 | a /= b = 3.333.... 等于 a = a / b |
%= | 取模等于运算符 | a %= b = 1 等于 a = a % b |
**= | 幂等于运算符 | a **= b = 1000 等于 a = a ** b |
//= | 取整除等于运算符 | a //= b = 3 等于 a = a // b |
逻辑运算符 | 描述 | 实例 |
and | "与" - 如果 x 为 False,x and y 返回 x 的值,否则返回 y 的计算值。 | a and b 返回 3 |
or | "或" - 如果 x 是 True,它返回 x 的值,否则它返回 y 的计算值。 | a and b 返回 10 |
not | "非" - 如果 x 为 True,返回 False 。如果 x 为 False,它返回 True。 | not(a and b) 返回False |
成员运算符 | 描述 | 实例 |
in | 如果在指定的序列中找到值返回True,反之返回False | 参考图7 |
not in | 如果在指定的序列中没有找到值返回True,反之返回False | 参考图8 |
图7
图8
数学常量
常量 | 详情 |
pi | 数学常量 pi(圆周率,一般以π来表示) |
e | 数学常量 e,e即自然常数(自然常数)。 |
数字内置函数
函数 | 详情 |
abs(x) | 返回数字的绝对值,如abs(-10) 返回 10 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
cmp(x, y) | 如果 x < y 返回 -1, 如果 x == y 返回 0, 如果 x > y 返回 1。 Python 3 已废弃,使用 (x>y)-(x<y) 替换。 |
exp(x) | 返回e的x次幂(ex),如math.exp(1) 返回2.718281828459045 |
fabs(x) | 返回数字的绝对值,如math.fabs(-10) 返回10.0 |
floor(x) | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
log(x) | 如math.log(math.e)返回1.0,math.log(100,10)返回2.0 |
log10(x) | 返回以10为基数的x的对数,如math.log10(100)返回 2.0 |
max(x1, x2,...) | 返回给定参数的最大值,参数可以为序列。 |
min(x1, x2,...) | 返回给定参数的最小值,参数可以为序列。 |
modf(x) | 返回x的整数部分与小数部分,两部分的数值符号与x相同,整数部分以浮点型表示。 |
pow(x, y) | x**y 运算后的值。 |
round(x [,n]) | 返回浮点数 x 的四舍五入值,如给出 n 值,则代表舍入到小数点后的位数。 其实准确的说是保留值将保留到离上一位更近的一端。 |
sqrt(x) | 返回数字x的平方根。 |
随机数函数
函数 | 详情 |
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]范围内。 |
三角函数
函数 | 详情 |
acos(x) | 返回x的反余弦弧度值。 |
asin(x) | 返回x的反正弦弧度值。 |
atan(x) | 返回x的反正切弧度值。 |
atan2(y, x) | 返回给定的 X 及 Y 坐标值的反正切值。 |
cos(x) | 返回x的弧度的余弦值。 |
hypot(x, y) | 返回欧几里德范数 sqrt(x*x + y*y)。 |
sin(x) | 返回的x弧度的正弦值。 |
tan(x) | 返回x弧度的正切值。 |
degrees(x) | 将弧度转换为角度,如degrees(math.pi/2) , 返回90.0 |
radians(x) | 将角度转换为弧度 |
二、String(字符串)
str1 = '刘二哈' # '' 单引号括起来的字符串
str2 = "大眼泡" # "" 双引号括起来的字符串
str3 = "好\n玩\t啊" # \转义字符 个别字符需要转移字符 例如 \' \" \\ \n \t \r
python中的字符串需要使用单引号或双引号括起来
字符串切片操作
包含字符串的截取与字符串的拼接
序列类型的切片操作:
Slice:
L[index]; 访问某个元素;
L[1:4]; 区间
L[star:stop:step]; 设置步长取区间元素
字符串下标
Python 字符串不能被改变。可以对一个字符串变量进行重新复制,不能对字符串中某个元素进行改变
str = "刘二哈笑嘻嘻"
str = "刘老根" #可以改变
str[0] = "刘提溜" #不能改变 会抛出异常
字符串转移字符
转移字符 | 详情 |
行尾时) | 续行符 |
\\ | 反斜杠符号 |
\' | 单引号 |
\" | 双引号 |
\a | 响铃 |
\b | 退格(Backspace) |
\000 | 空 |
\n | 换行 |
\v | 纵向制表符 |
\t | 横向制表符 |
\r | 回车,将 \r 后面的内容移到字符串开头,并逐一替换开头部分的字符,直至将 \r 后面的内容完全替换完成。 |
\f | 换页 |
\yyy | 八进制数,y 代表 0~7 的字符,例如:\012 代表换行。 |
\xyy | 十六进制数,以 \x 开头,y 代表的字符,例如:\x0a 代表换行 |
\other | 其它的字符以普通格式输出 |
Python 字符串格式化
符 号 | 描述 |
%c | 格式化字符及其ASCII码 |
%s | 格式化字符串 |
%d | 格式化整数 |
%u | 格式化无符号整型 |
%o | 格式化无符号八进制数 |
%x | 格式化无符号十六进制数 |
%X | 格式化无符号十六进制数(大写) |
%f | 格式化浮点数字,可指定小数点后的精度 |
%e | 用科学计数法格式化浮点数 |
%E | 作用同%e,用科学计数法格式化浮点数 |
%g | %f和%e的简写 |
%G | %f 和 %E 的简写 |
%p | 用十六进制数格式化变量的地址 |
格式化操作符辅助指令: | |
* | 定义宽度或者小数点精度 |
- | 用做左对齐 |
+ | 在正数前面显示加号( + ) |
<sp> | 在正数前面显示空格 |
# | 在八进制数前面显示零('0'),在十六进制前面显示'0x'或者'0X'(取决于用的是'x'还是'X') |
0 | 显示的数字前面填充'0'而不是默认的空格 |
% | '%%'输出一个单一的'%' |
(var) | 映射变量(字典参数) |
m.n. | m 是显示的最小总宽度,n 是小数点后的位数(如果可用的话) |
f-string 格式化字符串以 f 开头,后面跟着字符串,字符串中的表达式用大括号 {} 包起来,它会将变量或表达式计算后的值替换进去
str = "刘二哈"
print(f'hi {str}') # 输出 hi 刘二哈
Python三引号
python三引号允许一个字符串跨多行,字符串中可以包含换行符、制表符以及其他特殊字符
str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (str)
字符串内置函数
capitalize() |
返回一个指定的宽度 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)) |
把字符串 string 中的 tab 符号转为空格,tab 符号默认的空格数是 8 。 |
find(str, beg=0, end=len(string)) 检测 str 是否包含在字符串中,如果指定范围 beg 和 end ,则检查是否包含在指定范围内,如果包含返回开始的索引值,否则返回-1 |
index(str, beg=0, end=len(string)) 跟find()方法一样,只不过如果str不在字符串中会报一个异常。 |
如果字符串至少有一个字符并且所有字符都是字母或数字则返 回 True,否则返回 False |
如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False |
如果字符串只包含数字则返回 True 否则返回 False.. |
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
如果字符串中只包含数字字符,则返回 True,否则返回 False |
如果字符串中只包含空白,则返回 True,否则返回 False. |
如果字符串是标题化的(见 title())则返回 True,否则返回 False |
如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
返回字符串长度 |
返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
转换字符串中所有大写字符为小写. |
截掉字符串左边的空格或指定字符。 |
创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
返回字符串 str 中最大的字母。 |
返回字符串 str 中最小的字母。 |
把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。 |
rfind(str, beg=0,end=len(string)) 类似于 find()函数,不过是从右边开始查找. |
rindex( str, beg=0, end=len(string)) 类似于 index(),不过是从右边开始. |
返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
删除字符串末尾的空格或指定字符。 |
split(str="", num=string.count(str)) 以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
startswith(substr, beg=0,end=len(string)) 检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
在字符串上执行 lstrip()和 rstrip() |
将字符串中大写转换为小写,小写转换为大写 |
返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
translate(table, deletechars="") 根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
转换字符串中的小写字母为大写 |
返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
三、Tuple(元组)
元组写在小括号 () 里,元素之间用逗号隔开。
元组中的元素类型可以不相同:
tuple = (1,"21",1.3,True)
元组索引下表与字符串相同
元组的切片操作与字符串相同,参考字符串操作
例如:
print (tuple[2:]) # 输出从第三个元素开始的所有元素
元组内元素不可变
tuple = (1,"21",1.3,True)
tuple[1] = "33";
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表
构造包含 0 个或 1 个元素的元组比较特殊
tupleNull = () # 空元组
tupleOne = ("刘胖子",) # 一个元素,需要在元素后添加逗号
元组内置函数
Python元组包含了以下内置函数
方法 | 实例 |
len(tuple) 计算元组元素个数。 | >>> tuple1 = ('Google', 'Runoob', 'Taobao') >>> len(tuple1) 3 >>> |
max(tuple) 返回元组中元素最大值。 | >>> tuple2 = ('5', '4', '8') >>> max(tuple2) '8' >>> |
min(tuple) 返回元组中元素最小值。 | >>> tuple2 = ('5', '4', '8') >>> min(tuple2) '4' >>> |
tuple(iterable) 将可迭代系列转换为元组。 | >>> list1= ['Google', 'Taobao', 'Runoob', 'Baidu'] >>> tuple1=tuple(list1) >>> tuple1 ('Google', 'Taobao', 'Runoob', 'Baidu') |
四、List(列表)
list = [1,3,5,"str",1.1,True]
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表
列表索引下表与字符串相同
列表的切片操作与字符串相同,参考字符串操作
例如:
print (list[2:]) # 输出从第三个元素开始的所有元素
与字符串不一样的是,列表中的元素是可以改变的:
列表内置方法
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() 复制列表 |
五、Set(集合)
集合(set)是由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。
基本功能是进行成员关系测试和删除重复元素。
可以使用大括号 { } 或者 set() 函数创建集合
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
setNull = set() #空集合
set3 = {1,2,2,3,4} #空集合
if 1 in set3:
print("存在集合中")
else:
print("不存在集合中")
set1 = set('abcdcasddf')
set2 = set('asbabadfaa')
print(f'set1 = {set1} : str2 = {set2}')
print(set1 - set2) # a 和 b 的差集
print(set1 | set2) # a 和 b 的并集
print(set1 & set2) # a 和 b 的交集
print(set1 ^ set2) # a 和 b 中不同时存在的元素
集合内置方法
方法 | 详情 |
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
六、Dictionary(字典)
字典是一种映射类型,字典用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合。
键(key)必须使用不可变类型。
在同一个字典中,键(key)必须是唯一的
dict = {}
dict["瘦了"] = "四斤"
dict["都会"] = "回弹"
tinydict = {'key1': 'value1','key2':2, 'key3': True}
print(dict.keys()) #输出字典所有键
print(tinydict.values()) #输出字典所有值
print(dict["瘦了"]) #输出键为 瘦了 的值
print(tinydict["key3"]) #输出键为 key3 的值
dict() 可以直接从键值对序列中构建字典
dicti = dict([('刘', 1), ('猪', 2), ('精', 3)])
print(dicti) #{'刘': 1, '猪': 2, '精': 3}
dicti = dict(刘=1, 猪=2, 精=3)
print(dicti) #{'刘': 1, '猪': 2, '精': 3}
字典的值可以为任意类型
dicti = dict([('刘', {1.3,1,3,4,True,'test'}), ('猪', [1,2,3.3,'test',True]), ('精', (1,3,4,False,'test'))])
print(dicti) #{'刘': {1.3, 1, 3, 4, 'test'}, '猪': [1, 2, 3.3, 'test', True], '精': (1, 3, 4, False, 'test')}
字典的关键字必须为不可变类型,且不能重复。
字典内置函数&方法
len(dict) 计算字典元素个数,即键的总数。 | >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> len(dict) 3 |
str(dict) 输出字典,以可打印的字符串表示。 | >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> str(dict) "{'Name': 'Runoob', 'Class': 'First', 'Age': 7}" |
type(variable) 返回输入的变量类型,如果变量是字典就返回字典类型。 | >>> dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'} >>> type(dict) <class 'dict'> |
radiansdict.clear() 删除字典内所有元素 |
radiansdict.copy() 返回一个字典的浅复制 |
radiansdict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
radiansdict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
key in dict 如果键在字典dict里返回true,否则返回false |
radiansdict.items() 以列表返回一个视图对象 |
radiansdict.keys() 返回一个视图对象 |
radiansdict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
radiansdict.update(dict2) 把字典dict2的键/值对更新到dict里 |
radiansdict.values() 返回一个视图对象 |
pop(key[,default]) 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
popitem() 随机返回并删除字典中的最后一对键和值。 |
七、数据类型转换
函数 | 详情 |
将x转换为一个整数 | |
将x转换到一个浮点数 | |
创建一个复数 | |
将对象 x 转换为字符串 | |
将对象 x 转换为表达式字符串 | |
用来计算在字符串中的有效Python表达式,并返回一个对象 | |
将序列 s 转换为一个元组 | |
将序列 s 转换为一个列表 | |
转换为可变集合 | |
创建一个字典。d 必须是一个 (key, value)元组序列。 | |
转换为不可变集合 | |
将一个整数转换为一个字符 | |
将一个字符转换为它的整数值 | |
将一个整数转换为一个十六进制字符串 | |
将一个整数转换为一个八进制字符串 |