python容器(1)

103 阅读5分钟

一个变量,一个数据

Snipaste_2023-07-11_14-14-58.png

一个变量多个数据

Snipaste_2023-07-11_14-16-07.png

Snipaste_2023-07-11_14-17-12.png

能存储多个元素的python类型,就是容器,容器中的数据叫做元素,容器中的元素可以是任意类型,如:布尔,字符串,数字等。

python中的容器根据特点的不同,如是否重复,是否可以修改,是否有序(索引)分为五类:list(列表),tuple(元组),str(字符串),set(集合),dirt(字典)。

列表(可变类型)_list[]

定义空列表:

方式1(常用): 列表名 = []
方式2: 列表名 = list()

定义非空列表:

方式1(常用): 列表名 = [元素1 , 元素2 , 元素3 , ...]
方式2: 列表名 = [ [元素1,元素2] , [元素1,元素2] , ...]

Snipaste_2023-07-11_14-39-10.png

Snipaste_2023-07-11_14-39-36.png

在定义空列表的方式2中不要添加数据,这相当于强转,添加多个字符串、int和布尔类型数据会报错,添加1个字符串会将其拆分为列表。

list2 = list('wang')
print(list2)
运行结果
['w', 'a', 'n', 'g']

list2 = list('wang','li')
print(list2)
运行结果
TypeError: list expected at most 1 argument, got 2

list2 = list(100)
print(list2)
运行结果
TypeError: 'int' object is not iterable

列表的下标索引

下标索引就是每个元素对应的编号,但是需要注意有两套索引

正索引:从左到右,从0开始,依次递增

负索引:从右到左,从-1开始,依次递减

Snipaste_2023-07-11_16-58-31.png 列表中最大索引:len(列表)-1

列表中可以根据索引找元素,但如果索引超出范围就会报错:IndexError: list index out of range

Snipaste_2023-07-11_16-07-03.png

Snipaste_2023-07-11_16-07-40.png

列表的嵌套

列表的嵌套就是一个列表中的元素是另一个列表 Snipaste_2023-07-11_16-59-20.png Snipaste_2023-07-11_16-21-03.png Snipaste_2023-07-11_16-21-25.png

列表的增删改查

添加元素

添加一个元素到列表末尾: 列表名.append(元素)

添加多个元素多列表末尾: 列表名.extend(容器)

在指定位置插入指定元素: 列表名.insert(索引位置,元素)


#需求: 定义一个空列表,依次使用三种添加元素方法给列表添加数据
#1.定义空列表
name_list = []
print(name_list)

#2.使用append添加张三到列表中
name_list.append('张三')
print(name_list)

#3.使用extend一次性添加多个元素到列表中
name_list.extend(['李四', '王五'])
print(name_list)

#4.使用insert插入数据到指定位置
name_list.insert(0, '赵六')
print(name_list)

Snipaste_2023-07-11_16-31-36.png

删除元素

根据索引删除对应位置上的元素: 列表名.pop(索引)或者del 列表名[索引]

直接删除指定元素: 列表名.remove(元素)

清空列表所有元素: 列表名.clear()

# 1.定义非空列表
name_list = ['张三', '李四', '王五', '赵六','冯七']
print(name_list)

# 2.删除第一个元素
name_list.pop(0)
print(name_list)

# 3.删除最后一个元素
del name_list[-1]
print(name_list)

# 4.删除'王五'元素
name_list.remove('王五')
print(name_list)

# 5.清空列表
name_list.clear()
print(name_list)

Snipaste_2023-07-11_16-39-58.png

修改元素

根据索引修改指定位置上的元素: 列表名[索引] = 新值

name_list = ['张三', '李四', '王五']
age_list = [18, 28, 38]
# info嵌套两个小列表
info = [name_list, age_list]
print(info)

# 2.把李四修改成赵六
name_list[1] = '赵六'
print(name_list)

# 3把info中王五修改为周七
info[0][2] = '周七'
print(info)

Snipaste_2023-07-12_20-12-13.png

查询元素

根据索引查询指定位置上的元素: 列表名[索引]

查询列表中元素的总个数: length = len(列表名)

查询指定元素出现的次数: count = 列表名.count(元素) 注意: 查找的元素如果不存在就返回0

查询指定元素的索引位置: index = 列表名.index(元素) 注意: 如果查找的元素不存在就报错: ValueError: 60 is not in list

# 1.定义非空列表
sum_list = [10, 20, 30, 40, 50, 30]

# 需求2: 查询列表中元素的个数
size = len(sum_list)
print(f'列表中一共有{size}个元素')

# 需求3: 查询30这个元素出现了几次
count = sum_list.count(30)
print(f'30这个元素一共出现了{count}次')

# 需求4: 查询20这个元素的索引位置
index = sum_list.index(20)
print(f'20这个元素的索引位置是:{index}')

Snipaste_2023-07-11_20-11-43.png

扩展操作

把列表中元素升序排序: 列表名.sort()

把列表中元素反转存储: 列表名.reverse()

复制列表元素到新列表: 新列表名 = 列表名.copy()

# 1.定义非空列表
sum_list = [10, 20, 30, 40, 50, 30]

# 需求2: 把列表中元素进行升序排序,reverse=True(降序),reverse=False(升序(默认))
#sum_list.sort(reverse=False)=sum_list.sort()
sum_list.sort()
print(sum_list)

# 需求3: 把列表中元素反转(如果先sort升序,反转类似于倒序)
sum_list.reverse()
print(sum_list)
# 需求4: 复制列表到新的列表中
new_list = sum_list.copy()
print(new_list)
print(sum_list)

Snipaste_2023-07-11_20-16-53.png

列表的遍历

# 定义列表存储
num_list = [50, 20, 30, 10, 40]
# 需求1: for循环遍历列表
for num in num_list:
    # 直接打印对应的每个元素
    print(num)

print('---------------------------')

# 需求2: while循环遍历列表
# 1.定义初始变量,作为索引使用,只能从0开始
index = 0
# 2.条件判断,索引不能超出范围 最大索引: len(列表)-1
while index < len(num_list):
    # 3.循环体,每次根据索引查询并打印对应的元素
    num = num_list[index]
    print(num)
    # 4.条件控制
    index += 1

列表的特点

(1)可以容纳多个元素

(2) 可以容纳不同类型的元素(混装)

(3) 数据是有序存储的(有下标序号)

(4) 支持for循环(因为for循环又叫遍历循环)

(5) 支持while循环(因为有下标索引)

(6)允许重复数据存在

(7) 支持修改(增加或删除元素等)