变量用于存储单一数据:数值,对象
如果存储多个数据:利用列表
数组: c语言中: 可以存储多个数据,同一个数组中的所有元素必须是相同类型的数据
列表:Python:可以存储多个数据,存储多种数据
最常用的数据类型之一
Python 没有类型的---对象类型
int float str list
列表是一个类
列表的特点:
1. 可以存储多个数据,可以存储多种数据
2. 是一个可迭代对象
3. 支持索引操作
一 创建列表
1. 手工创建:
变量=[元素1,元素2...]
如果列表中的元素都是同一个类型,则称该列表为某类型列表
例如:a=[1,2,3] # ---整型列表
如果列表中元素不是同一种类型,则称该列表为混合列表
如果列表中的元素都是又一个列表,则称该列表为二维列表
如果列表中没有任何元素,则称该列表为空列表 []
2. 利用构造方法:
1. list() 返回一个空列表
2. list(iterable) 根据可迭代对象创建列表 a=list('hehe') # ['h', 'e', 'h', 'e']
3. 获得列表的元素的个数: len()---返回一个列表的长度(元素的个数)
二 从列表获取元素
1. 通过索引获取元素 索引:下标---下标从0开始的
列表的长度-1--->最大的索引值
如果索引值超出范围则会报错:IndexError 索引越界异常
语法: 列表名[索引值]
列表支持负数作为下标,负号代表方向,数值代表反向的位置(反向的位置是从-1开始算起)
l=[1,2,3,4,5,6,7,8,9]
l[4] #5
l[-4] #6
2. 遍历
将列表中所有的元素,全部访问一遍,不重复,不遗漏
访问:修改+读取+删除
for 循环 l=[1,2,3]
for i in l:
print(i)
三 修改列表
通过下标操作直接修改
l=[1,2,3]
l[0]=99
print(l) # [99,2,3]
四 删除列表
1. 删除列表中的元素
1. del 变量名[下标]
2. clear():清空列表
3. remove(value) 从列表中删除value值,其中列表如果有多个value值,只删除第一个出现的值(下标最小), 如果value不再列表中,则抛出异常:ValueError
4. pop([index]): 删除并返回index下标的元素,如果index没有给出则取最后一个值,如果列表为空或下标越界 则抛出IndexError
2. 删除一个列表
l=[1,2,3] 语法:del 列表名(指代变量)
del删除的是变量,并没有删除列表本身,当列表对象没有任何引用时,垃圾回收机制会将该列表回收(删 除)
五 插入元素
1. append(obj)
向列表的末尾添加元素(obj)
只能一次添加一个元素
2. extend(iterable):
从可迭代对象中将元素扩展到列表中
通过可迭代对象一次性添加多个元素
3. insert(index,object):
在index前插入object
六 列表的其他方法
1. copy(): 浅拷贝
2. count(value): 返回value在列表中出现的次数
3. index(value, [start, [stop]]):
返回value在列表中出现的第一个下标,如果value不再列表中则抛出异常:ValueError
start:起始下标 能取到
stop:结束下标 取不到
4. reverse() 原地翻转
七 列表的切片
切片--分片 slice 用于拷贝新列表 可以截取(拷贝)出多个数据
语法:
列表名[起始下标:结束下标] # 结束下标取不到
起始下标默认为:0
结束下标默认为:-1(能取到)
简写形式:
如果起始下标不给出,默认从头开始截取
如果结束下标不给出,默认截取到最后
如果前后全部省略:全部都截取
切片的高级应用
切片可以接受3个参数
语法:
列表名[起始下标:结束下标:步长]
切片的底层实现---不是索引操作
l=[1,2,3,4,5,6,7,8,9]
>>> l[0:-3]
[1, 2, 3, 4, 5, 6]
>>> l[-3:0]
[]
>>> l[-3:0:-1]
[7, 6, 5, 4, 3, 2]
>>> l
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l[:]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> l[3:]
[4, 5, 6, 7, 8, 9]
>>> l[3:8]
[4, 5, 6, 7, 8]
>>> l[3:9]
[4, 5, 6, 7, 8, 9]
>>> l[3:10]
[4, 5, 6, 7, 8, 9]
>>> l[3:100]
[4, 5, 6, 7, 8, 9]
>>> l[-1:-9:-1]
[9, 8, 7, 6, 5, 4, 3, 2]
>>> l[-1:-10:-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
>>> l[-1:-100:-1]
[9, 8, 7, 6, 5, 4, 3, 2, 1]
八 支持的运算符
1. 比较运算符:
> < >= <= == !=
比较规则:根据列表中相同下标的元素逐个进行比较
列表中的元素如果不是同一个类型,则无法比较
比较和长短无关
2. 逻辑运算符
and or not
3. 加法和乘法操作
表示拼接和重复
4. 成员关系操作符
in/not in
九 排序
排序规则
分析---程序归纳
排序:八大基本排序:直接插入排序,希尔排序(shell),选择排序,堆排序,冒泡排序,快速排序,归并排序,基数排序
冒泡排序
让列表中的元素,两个相邻的元素之间比较大小,如果不符合条件则更换两者的位置
list1=[5,4,3,2,1]
length=len(list1)
for i in range(1,length): #大轮数
for j in range(length-i): # 小轮数
# 比较大小
if list1[j]>list1[j+1]:
list1[j],list1[j+1]=list1[j+1],list1[j]
print(list1)
选择排序
每次让同一个下标的元素和其他元素作对比
#选择
list1=[5,4,3,2,1]
length=len(list1)
for i in range(length-1): # 大轮 0,1,2,3
for j in range(i+1,length): # 小轮
# 比较大小
if list1[i]>list1[j]:
list1[i],list1[j]=list1[j],list1[i]
print(list1)
十 sort()
sort是list的一个方法
1. sort(key=None, reverse=False)
key:排序规则,默认None(从小到大)
reverse:是否翻转
默认进行升序排序
2. 使用的排序方式:
Timsort排序:结合了归并排序(merge sort)+插入排序(insertion sort)
Python2.3版本开始引入,之前是归并排序
十一 二维列表
列表可以存储多个数据,存储多种数据:列表可以存储列表
一维列表:只有一层列表
二维列表:一维列表中的一维列表
列表的访问: 列表名[行坐标][列坐标]
列表名[第一层元素下标][第二层元素下标]
列表的遍历:
利用循环嵌套(双重循环)
l=[[1,2,3], [4,5,6], [7,8,9]]
print(l[1][1])
二维列表创建
1. 手工创建
list1=[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
2. 构造方法:
list(iterable)
3. 重复运算:
[[1,2,3]]*3
4. 拼接运算:
[[1,2,3]]+[[1,2,3]]
5. 推导式:
l=[[1,2,3] for i in range(3)]
#[[1, 2, 3], [1, 2, 3], [1, 2, 3]]