基本运算符
运算符 | 说明 |
---|---|
or,and,not | 布尔或、与、非 |
is,is not | 同一性判断,判断是否为同一个对象 |
<,<=,>,>=,!=,== | 比较 |
l ^ & | 按位或、按位异或、按位与 |
<<,>> | 移位 |
~ | 按位翻转 |
+,-,*,、,、、,% | 加、减、乘、浮点除、整数除、取余 |
** | 幂运算 |
1、比较运算符可以连用,并且含义和日常使用完全一致
>>>a=4
>>>3<4<10
True
2、位操作
>>>a=0b11001
>>>b=0b01000
>>>c=a|b
>>>bin(c)#bin()可以将数字转成二进制表示
'0b11001'
>>>bin(c&b)
'0b01000'
>>>bin(c^b)
'0b10001'
3、加法操作
(1)数字相加
(2)字符串拼接
(3)列表、元组等合并
4、乘法操作
(1)数字相乘
(2)字符串复制 “st”*3==>“ststst”
(3)列表、元组等复制 [10,20]*3==>[10,20,10,20,10,20]
复合赋值运算符
运算符 | 描述 |
---|---|
+= | 加法赋值、字符串拼接 |
-= | 减法赋值 |
*= | 乘法赋值 |
/= | 浮点除赋值 |
//= | 整数除赋值 |
%= | 取余赋值 |
**= | 幂运算赋值 |
<<= | 左移赋值 |
>>= | 右移赋值 |
&= | 按位与赋值 |
l= | 按位或赋值 |
^= | 按位异或赋值 |
注意:与C和Java不一样,Python不支持自增和自减
运算符优先级问题
运算符 | 描述 |
---|---|
** | 指数(最高优先级 |
~ | 按位翻转 |
* / % // | 乘、除、取模、取整除 |
+ - | 加减法 |
>> << | 右移、左移运算符 |
& | 按位与 |
^ l | 位运算 |
<= < > >= | 比较运算符 |
<> == != | 等于运算符 |
= %= /= //= -= += *= **= | 赋值运算符 |
is/is not | 身份运算符 |
in/in not | 成员运算符 |
not or and | 逻辑运算符 |
复杂的表达式一定要使用小括号组织
1、乘除优先加减
2、位运算符和算术运算符>比较运算符>赋值运算符>逻辑运算符
序列
序列是一种数据存储方式,用来存储一系列的数据。在内存中,序列就是一块用来存放多个值的连续的内存空间。序列中存储的是对象的地址,而不是值。
Python中常用的序列结构有:字符串、列表、元组、字典、集合
列表
列表:用于存储任意数目、任意类型的数据集合
列表是内置可变序列,是包含多个元素的有序连续的内存空间。
列表定义的标准语法格式:a=[10,20,30,40]
列表中的元素可以各不相同,可以是任意类型a=[10,20,'ab',True]
列表常用方法:
方法 | 要点 | 描述 |
---|---|---|
list.append(x) | 增加元素 | 将元素x增加到列表list尾部 |
list.extend(alist) | 增加元素 | 将列表alist所有元素加到列表list尾部 |
list.insert(index,x) | 增加元素 | 在列表list指定位置index处插入元素x |
list.remove(x) | 删除元素 | 在列表list中删除首次出现的指定元素x |
list.pop(insex,x) | 删除元素 | 删除并返回列表list指定位置index处的元素,默认是最后一个元素 |
list.clear() | 删除所有元素 | 删除列表所有元素,并不是删除列表对象 |
list.index(x) | 访问元素 | 返回第一个x的索引位置,若不存在x元素抛出异常 |
list.count(x) | 计数 | 返回指定元素x在列表list中出现的次数 |
len(list) | 列表长度 | 返回列表中包含元素的个数 |
list.reverse() | 翻转列表 | 所有元素原地翻转 |
list.sort() | 排序 | 所有元素原地排序 |
list.copy() | 浅拷贝 | 返回列表对象的浅拷贝 |
Python的列表大小可变,根据需要随时增加或缩小
字符串和列表都是序列类型。一个字符串是一个字符序列,一个列表是任何元素的序列
列表的创建
基本语法[]创建
>>>a=[10,20,30]
>>>b=[]#创建一个空的列表对象
list()创建
使用list()可以将任何可迭代的数据转化成列表
>>>a=list()#创建一个空的列表对象
>>>a=list(range(10))
>>>a
[0,1,2,3,4,5,6,7,8,9]
>>>a=list("wwj,st")
>>>a
['w','w','j',',','s','t']
range()创建整数列表
range()可以帮助我们创建整数列表
range([start],end,[step])
'''
start参数:可选,表示起始数字,默认是0
end参数:必选,表示结尾数字
step参数:可选,表示步长,默认为1
'''
Python3中range()返回的是一个range对象,而不是列表,我们要通过list()方法将其转化成列表对象
>>>list(range(3,15,2))
[3,5,7,9,11,13]
>>>list(range(15,3,-1))
[15,14,13,12,11,10,9,8,7,6,5,4]
推导式生成列表
使用列表推导式可以方便的创建列表,在开发中经常使用。但是,涉及到for循环和if语句,因此仅做基本介绍。后续再整理
>>>a=[x*2 for x in range(5)]#循环创建多个元素
>>>a
[0,2,4,6,8]
>>>a=[x*2 for x in range(100) if x%9==0]
>>>a
[0,18,36,54,72,90,108,126,144,162,180,198]
列表元素的增加和删除
append()方法
原地修改列表对象
>>>a=[10,20]
>>>a.append(30)
>>>a
[10,20,30]
extend()方法
将目标列表的所有元素添加到本列表的尾部,属于原地操作,不创建新的列表对象
>>>a=[10.20]
>>>a.extend([2,3])
>>>a
[10,20,2,3]
insert()方法
使用insert()方法可以将指定元素插入到列表对象的任意指定位置。这样会让插入位置后面所有的元素进行移动,会影响处理的速度。涉及大量元素时,尽量避免使用。类似发生这种移动的函数还有:remove()、pop()、del(),他们在删除非尾部元素时也会发生操作位置后面元素的移动
>>>a=[1,2,3]
>>>a.insert(1,4)
>>>a
[1,4,2,3]
+运算符操作
并不是真正的尾部添加元素,而是创建新的列表对象;将原列表的元素和因列表的元素依次复制到新的列表对象中。可以会涉及大量的复制操作,对于操作大量元素不建议使用
>>>a=[10,20]
>>>id(a)
46016072
>>>a=a+[50]
>>>id(a)
>46015432
乘法扩展
使用乘法扩展列表,生成一个新列表,新列表元素是原列表元素的多次重复
>>>a=['st',1]
>>>b=a*3
>>>a
['st',1]
>>>b
['st',1,'st',1,'st',1]
del()删除
删除列表指定位置的元素
>>>a=[1,2,3]
>>>del a[1]
>>>a
[1,3]
pop()方法
pop()删除并返回指定位置元素,如果未指定位置则默认操作列表最后一个元素
>>>a=[1,2,3]
>>>a.pop()
>>>a
[1,2]
remove()方法
删除首次出现的指定元素,若不存在该元素抛出异常
>>>a=[1,2,3,1,1,4,5,6]
>>>a.remove(1)
>>>a
[2,3,1,1,4,5,6]
列表元素访问和计算
通过索引直接访问元素
索引的区间在[0,列表长度-1],超过这个范围会抛出异常
index()方法
index()获得指定元素在列表中首次出现的索引位置。
index(value,[start,[end]])#start和end指定了搜索的范围
count()方法
获得指定元素在列表中出现的次数
>>>a=[1,1,1,1,2,3,1]
>>>a.count(1)
5
len()
len()返回列表长度
>>>a=[1,2,3]
>>>len(a)
3
成员资格判断
判断列表中是否存在指定的元素,可以使用count(0方法,返回0表示不存在,返回大于0表示存在。但使用in关键字判断,直接返回Ture和False
>>>a=[1,2,3,4,5]
>>>1 in a
True
切片操作
切片slice操作可以让快速提取子列表或修改。标准格式为:
[起始偏移量start:终止偏移量end[:步长step]]
#当步长省略时顺便可以省略第二个冒号
典型操作(三个量为正数):
操作和说明 | 示例 | 结果 |
---|---|---|
[:]提取整个列表 | [1,2,3][:] | [1,2,3] |
[start:]从start索引开始到结尾 | [1,2,3][1:] | [2,3] |
[:end]从头开始直到end-1 | [1,2,3,4][:2] | [1,2] |
[start:end]从start到end-1 | [1,2,3,4][1:3] | [2,3] |
[start🔚step]从start到end-1,步长是step | [1,2,3,4,5,6,7][1:6:2] | [2,4,6] |
其他操作(三个量为负数):
示例 | 说明 | 结果 |
---|---|---|
[1,2,3,4,5,6,7][-3:] | 倒数第三个到结尾 | [5,6,7] |
[1,2,3,4,5,6,7][-5,-3] | 倒数第五个到倒数第三个(包头不包尾) | [3,4] |
[1,2,3,4,5,6,7][::-1] | 步长未付,从右向左反向提取 | [7,6,5,4,3,2,1] |
切片操作时,起始位移量和终止位移量不在[0,字符串长度-1]范围,也不会报错。起始位移量小于0会当做0,终止位移量大于“长度-1”当做-1
列表遍历
for obj in listObj:
print(obj)
列表排序
修改原列表、不建新列表的排序
>>>a=[2,1,3,4]
>>>id(a)
46017416
>>>a.sort()#默认是升序排列
>>>a
[1,2,3,4]
>>>id(a)
46017416
>>>a=[1,2,3,4]
>>>a.sort(reserve=True)#降序排序
>>>a
[4,3,2,1]
>>>import random
>>>random.shuffle(a)#打乱顺序
>>>a
[2,4,1,3]
新建列表的排序
内置函数sorted()进行排序,这个方法返回新列表,不对原列表做修改
>>>a=[2,1,3,4]
>>>id(a)
46016008
>>>a=sorted(a)#默认升序
>>>a
[1,2,3,4]>
reversed()返回迭代器
内置函数reversed()也支持进行逆序排列,与列表对象reverse()方法不同的是,内置函数reversed()不对原列表做任何修改,只是返回一个逆序排列的迭代器对象
>>>a=[2,1,3,4]
>>>c=reversed(a)
>>>c
<list_reverseiterator object at 0x0000000002BCCEB8>
>>>list(c)#迭代器只能用一次
[4,3,1,2]
>>>list(c)
[]
列表相关的其他内置函数汇总
max和min
返回列表中最大最小值
sum
对数值型列表的所有元素进行求和操作,对非数值型列表运算则会报错
多位列表
二维列表
一维列表可以存储一维、线性的数据
二维列表可以存储二维、表格的数据
>>>a=[
['wwj',10],
['st',11],
['ss',11]
]
>>>a[0]
['wwj',10]
>>>a[0][0]
'wwj'
文章均为本人观看视频学习所记录的知识点笔记(哔哩哔哩视频链接https://www.bilibili.com/video/BV1tU4y1t7rv)