Ch6 数据容器
一、入门
数据容器,一种可以容纳多份数据的数据类型,容纳的每一份数据称之为1个元素。每一个元素,可以是任意类型的数据,如字符串、数字、布尔等。
数据容器根据特点的不同,如是否支持重复数据、是否可以修改、是否有序,等,分为5类。分别 是:列表(list)、元组(tuple)、字符串(str)、集合(set)、字典(dict)。
二、list (列表)
列表内的每一个数据称之为元素。以 [ ] 作为标识。列表内每一个元素之间用,逗号隔开。
基本语法:
# 字面量
[元素1,元素2,...]
# 定义变量
变量名称 = [元素1,元素2,...]
# 定义空列表
变量名称 = [ ]
变量名称 = list( )
列表可以一次存储多个数据,且可以为不同的数据类型,支持嵌套。
1.列表的下标(索引)
取出特定位置的数据。!:起始下标是0
语法:
# 语法:列表[下标索引]
my_list = ["zhugegangtie", 888, True]
print(my_list[0])
print(my_list[1])
也可以反向索引,也就是从后向前:从-1开始依次递减(-1,-2,-3,....)
如果是嵌套的列表,也同样支持下标索引。eg.二维列表
my_list = [[1, 2, 3],[4, 5, 6]]
print(my_list[1][0])
!:注意下标索引的取值范围,超出范围无法取出元素,并且会报错。
2.练习
有一个列表内容是[21, 25, 21, 23, 22, 20],做如下操作
# 1.定义这个列表,并用变量接收它
list_1 = [21, 25, 21, 23, 22, 20]
# 2.追加一个数字31到列表的尾部
list_1.append(31)
print(list_1)
# 3.追加一个新列表[29,33,30]到列表的尾部
list_1.extend([29, 33, 30])
print(list_1)
# 4.取出第一个元素21
print(list_1[0])
# 5.取出最后一个元素30
print(list_1[-1])
# 6.查找元素31在列表中的下标位置
print(list_1.index(31))
3.列表的循环遍历
(1)while循环
将容器内的元素依次取出进行处理的行为称之为遍历、迭代。
循环条件的控制:定义一个变量表示下标,从0开始。
循环条件为 :下标值<列表的元素数量
index = 0
while index < len(列表):
元素 = 列表[index]
对元素进行处理
index += 1
def list_while_func():
"""
使用while循环遍历列表的演示函数
:return: None
"""
my_list = ["lalalla","balbala",1234]
# 循环控变量通过下标索引来控制,默认0
# 每一次索引下标变量+1
# 循环条件:下标索引变量 < 列表的元素的数量
# 定义一个变量用来标记列表的下标
index = 0 # 初始值为0
while index < len(my_list):
# 通过index变量取出对应下标的元素
element = my_list[index]
print(f"列表的元素:{element}")
# 至关重要:index每次都加1
index += 1
list_while_func()
(2)for循环
语法:
for 临时变量 in 数据容器:
对临时变量进行处理
def list_for_func():
"""
使用for循环遍历列表的演示函数
:return: None
"""
my_list = [1,2,3,4,5]
# for 临时变量 in 数据容器:
for element in my_list:
print(f"列表的元素有:{element}")
list_for_func()
(3)两种循环对比
a.在循环控制上:while循环可以自定循环条件,并自行控制;for循环不可以自定循环条件,只可以一个个从容器内取出数据
b.在无限循环上:while循环可以通过条件控制做到无限循环;for循环理论上不可以,因为被变量的容器容量不是无限的
c.在使用场景上:while循环适用于任何想要循环的场景;for循环适用于遍历数据容器的场景或简单的固定次数循环场景。
// for循环更简单,while循环更灵活
(4)练习案例
定义一个列表内容是[1,2,3,4,5,6,7,8,9,10],遍历列表,取出列表内的偶数,并存入一个新的列表对象中;使用while和for循环各操作一遍。
提示:通过if判断来确认偶数。通过列表的append方法来增加元素。
# 定义一个列表如下
original_list = [1,2,3,4,5,6,7,8,9,10]
print(original_list)
# while
even_numbers_while = []
index = 0
while index < len(original_list):
if original_list[index] % 2 == 0:
even_numbers_while.append(original_list[index])
index += 1
print("使用whilf循环提取的偶数列表", even_numbers_while)
# for
even_number_for = []
for number in original_list:
if number % 2 == 0:
even_number_for.append(number)
print("使用for循环提取的偶数列表:",even_number_for)