数据容器 – 列表
一、列表定义:list()
1、列表的定义语法:[元素1, 元素2, 元素3……]
释:[]表示列表,不同的元素之间用【英文逗号】间隔,可以有多个【元素】
2、什么是元素
数据容器内的每一份数据,都称之为元素
3、元素的类型有限制吗?
元素的数据类型没有任何限制,甚至元素也可以是列表,这样就定义了了嵌套列表
列表元素支持所有的数据类型:字符串、整型、布尔型、浮点型、列表……
list_test = ["字符串元素", 666, True, 17.22, ["我是嵌套列表中的第一个元素", 888]]
print(list_test)
print(type(list_test))
空列表
list_null1 = []
print(list_null1)
print(type(list_null1))
list_null2 = list()
print(list_null2)
print(type(list_null2))
二、列表下标索引:
1、列表的下标索引是什么?
列表的每一个元素,都有编号称之为下标索引;
从前向后的方向,编号从0开始递增;
从后向前的方向,编号从-1开始递增;
2、如何通过下标索引取出对应位置的元素呢?
格式:列表[下标]
即可取出;
3、下标索引的注意事项:
要注意下标索引的取值范围,超出范围无法取出元素,并且会报错
IndexError: list index out of range
# 从前向后:
# 取出列表中的第一个元素(最左侧元素)
print(list_test[0])
# 取出列表中的最后一个元素(最右侧元素)
print(list_test[4])
# 从后向前:
# 取出列表中的第一个元素(最左侧元素)
print(list_test[-5])
# 取出列表中的最后一个元素(最右侧元素)
print(list_test[-1])
# 取嵌套列表中的元素
print(list_test[-1][0])
方法
函数:一个封装的代码单元,可以提供特定的功能
方法:在python中,如果将函数定义为class(类)的成员,那么函数会被称之为:方法
函数定义:
def add(x, y):
return x+y
方法定义:
class Student:
def add(self, x, y): 将函数写在了class类里
return x+y
方法和函数的功能一样,有传入参数,有返回值,只是方法的使用格式不同:
函数的使用:
num = add(1,2) # 直接调用函数,传参,定义变量接收函数的返回值
方法的使用:
student = Student() # 先实例化class类
num = student.add(1,2) # 再用通过类.方法名,【点】将这个类中的方法调用使用,再传参赋值为定义的变量;
"""
定位元素下标
查找不存在的元素,会报错:ValueError: 元素内容 is not in list
"""
# 定义一个列表
list_test = ["字符串元素", 666, True, 17.22, ["我是嵌套列表中的第一个元素", 888]]
# index666 = list_test.index(66611) # 不存在的元素,会报错
index666 = list_test.index(666)
print(f"元素666,在列表中的下标为{index666}")
print(f"元素666,在列表中的下标为:",index666)
修改指定位置(索引)的元素值
语法:列表[下标]=值
# 定义一个列表
list_test = ["字符串元素", 666, True, 17.22, ["我是嵌套列表中的第一个元素", 888]]
print("原列表元素值:\t\t",list_test)
# 正向下标定位修改
list_test[1] = "我是666修改后的新元素内容"
print("修改后的列表元素:\t",list_test)
# 反向下标定位修改
list_test[-1][-1] = "我是列表中最后一个嵌套列表中的最后一个元素替换后的值"
print("修改后的列表元素:\t",list_test)
插入:insert – 指定下标位置,插入指定的元素
语法:列表.insert(下标,元素)
# 定义一个列表
list_test = ["字符串元素", 666, True, 17.22, ["我是嵌套列表中的第一个元素", 888]]
print("原列表元素值:\t\t",list_test)
# 指定下标位置,插入指定的元素
list_test.insert(1,"我是插入在下标【1】位置的一个元素")
print("修改后的列表元素:\t", list_test)
追加:append – 在列表的尾部,追加指定的一个元素
语法:列表.append(元素)
# 定义一个列表
list_test = ["字符串元素", 666, True, 17.22, ["我是嵌套列表中的第一个元素", 888]]
print("原列表元素值:\t\t",list_test)
# 指定下标位置,插入指定的元素
list_test.append("我是追加在列表尾部的一个元素")
print("修改后的列表元素:\t", list_test)
追加:extend – 在列表的尾部,追加指定的多个元素
语法:列表.extend(元素)
# 定义一个列表
list_test = ["字符串元素", 666, True, 17.22, ["我是嵌套列表中的第一个元素", 888]]
print("原列表元素值:\t\t",list_test)
# 指定下标位置,插入指定的元素
list_test.extend(["包含我之后都是追加在列表尾部的多个新元素哦!",777,False, 12.22])
print("追加一批元素后的列表元素:\t", list_test)
删除:
方式一:del – 删除指定下标的元素
语法:del 列表(下标)
方式二:pop – 删除指定下标的元素
语法:列表.pop(下标)
# 定义一个列表
list_test = ["字符串元素", 666, True, 17.22, ["我是嵌套列表中的第一个元素", 888]]
print("原列表元素值:\t\t",list_test)
# del删除
del_element = list_test[1]
print(f"下标【1】的数据是:{del_element}")
del list_test[1]
print("删除了下标【1】元素后的列表:\t", list_test)
# pop删除
pop_element = list_test.pop(-1)
print(f"通过pop取出的下标【-1】的值是:{pop_element}, 删除后的列表元素是:{list_test}")
remove:删除某元素在列表中的第一个匹配项
语法:列表.remove(元素)
释:根据传的元素,去列表中匹配,将匹配到的第一个移除
# 定义一个列表
list_test = ["字符串元素", 666, True, 17.22, ["我是嵌套列表中的第一个元素", 888]]
print("原列表元素值:\t\t",list_test)
# remove
list_test.remove(666)
print(f"移除指定元素【666】后的列表元素是:{list_test}")
clear:清空列表
语法:列表.clear()
# 定义一个列表
list_test = ["字符串元素", 666, True, 17.22, ["我是嵌套列表中的第一个元素", 888]]
print("原列表元素值:\t",list_test)
list_test.clear()
print(f"清空列表了 :\t {list_test}")
count:统计某元素在列表中的数量
语法:列表.count(元素)
# 定义一个列表
list_test = ["字符串元素", 666, True, 17.22, 666, 666, ["我是嵌套列表中的第一个元素", 888]]
print("原列表元素值:\t",list_test)
# count
num = list_test.count(666)
print(f"666在列表中的数量为:{num}")
len:统计列表所有元素的数量
语法:len(列表)
# 定义一个列表
list_test = ["字符串元素", 666, True, 17.22, 666, 666, ["我是嵌套列表中的第一个元素", 888]]
print("原列表元素值:\t",list_test)
# len
num = len(list_test)
print(f"列表中共有【{num}】个元素")
循环遍历的两种方式:
#定义一个列表:
test_list = [21,25,21,23,22,201]
print("定义的列表为:", test_list)
"""
while 循环遍历列表元素
方式:通过下标索引的方式,将下标对应的元素值取出来,赋值给一个变量来接收,每次将下标的值+1处理,直到遍历完列表所有的元素数量
"""
# 定义一个默认下标为0的变量
index_test = 0
while index_test < len(test_list): # 当下标小于列表的长度时,进入循环,当下标大于等于列表的长度时,停止循环;
element_test = test_list[index_test] # 通过下标索引的方式将当前下标的元素取出来,赋值给一个变量
print(f"下标{index_test}对应的元素为:{element_test}")
index_test += 1 # 将下标索引每循环一次都加 1
"""
*** for 循环遍历列表元素
方式:定义一个变量,从列表中取值
"""
print("for循环遍历:")
for element_for in test_list:
print(f"遍历列表的元素为:{element_for}")
while循环和for循环的对比
1、在循环控制上:
while循环可以自定循环条件,并自行控制;
for循环不可以自定循环条件,只可以一个个从容器中取出数据
2、在无限循环上:
while循环可以通过条件控制做到无限循环;
for循环理论上不可以,因为被遍历的容器容量不是无限的;
3、在使用场景上:
while循环适用于任何想要循环的场景;
for循环适用于,遍历数据容器的场景或简单的固定次数循环的场景;
4、什么是遍历??
将容器内的元素依次取出,并处理,称之为遍历操作
"""
*** 练习案例:取出列表中的偶数
定义一个列表,存在奇数和偶数
1、遍历列表,取出列表内的偶数,并存入一个新的列表对象中;
2、使用while循环和for循环各操作一次
"""
bl_list = [1,2,3,4,5,6,7,8,9,0]
print("使用while循环遍历列表中的偶数:")
index_bl = 0
even_number_list = []
odd_number_list = []
while index_bl < len(bl_list):
if bl_list[index_bl] % 2 == 0:
even_number = bl_list[index_bl]
even_number_list.append(bl_list[index_bl])
print(f"偶数列表元素为:{even_number_list}")
else:
odd_number = bl_list[index_bl]
odd_number_list.append(bl_list[index_bl])
print(f"奇数列表元素为:{odd_number_list}")
index_bl += 1