Python第四章列表

基本运算符

运算符说明
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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值