Python数据容器之list(列表)

153 阅读4分钟
数据容器——list(列表)
list定义
# list字面量
[元素1, 元素2, 元素3, ...]# 定义list变量
变量名称 = [元素1, 元素2, 元素3, ...]# 定义空list列表
变量名称 = []
变量名称 = list()

列表内的每一个数据,称为 元素

  • 以[]作为标识
  • list每一个元素之间用 , 隔开

注意:列表可以一次存储多个数据,且可以是不同类型的数据,支持嵌套

name_list = ["itheima", "itcast", "python"]
print(name_list)
print(type(name_list))
​
my_special_list = ["sun", 100, True]
print(my_special_list)
print(type(my_special_list))
​
my_sp_list_list = [[1, 2, 3], [4, 5, 6]]
print(my_sp_list_list)
print(type(my_sp_list_list))
list下标(索引)
# 语法:列表[下标索引]
​
name_list = ["itheima", "itcast", "python"]
print(name_list[0])
print(name_list[1])
print(name_list[2])
​
# 下标索引可以取负数(反向)
print(name_list[-1])
print(name_list[-2])
print(name_list[-3])
​
# 嵌套list的下标索引
my_sp_list_list = [[1, 2, 3], [4, 5, 6]]
print(my_sp_list_list[0][2]) # 3

注意:通过下标索引取数字,一定不要超出范围,否则会报错。

# IndexError: list index out of range
name_list = ["itheima", "itcast", "python"]
print(name_list[3])
list常用操作方法
  • 查找某元素下标——查
# 功能:查找某元素在列表中的下标,找不到会报 ValueError: 'xxx' is not in list
# 语法:列表.index(元素)
# index()是列表对象(变量)内置的方法(函数)name_list = ["itheima", "itcast", "python"]
index = name_list.index("itheima")
print(index)
​
index = name_list.index("hello")
print(index) # ValueError: 'hello' is not in list
  • 修改特定位置的元素值——改(赋值)
# 语法:列表[下标] = 值
# 对指定下标(正向 反向下标均可)的值进行重新赋值name_list = ["itheima", "itcast", "python"]
name_list[2] = "java"
print(name_list)
  • 插入元素——插
# 语法:列表.insert(下标, 元素)
# 在指定的下标位置插入指定的元素
​
name_list = ["itheima", "itcast", "python"]
name_list.insert(2, "java")
print(name_list) # ['itheima', 'itcast', 'java', 'python']
name_list.insert(2, 100)
print(name_list) # ['itheima', 'itcast', 100, 'java', 'python']
  • 追加元素——增
# append 追加一个元素
# 语法:列表.append(元素)
# 将指定元素追加到列表的尾部
​
name_list = ["itheima", "itcast", "python"]
name_list.append("c++")
print(name_list) # ['itheima', 'itcast', 'python', 'c++']
​
# extend 追加一批元素
# 语法:列表.extend(其他数据容器)
# 将其他数据容器的内容取出,依次追加到列表尾部
name_list = ["itheima", "itcast", "python"]
num_list = [1, 2, 3]
name_list.extend(num_list)
print(name_list) # ['itheima', 'itcast', 'python', 1, 2, 3]
​
# 注意:如果用append(数据容器),会成为嵌套
name_list = ["itheima", "itcast", "python"]
num_list = [1, 2, 3]
name_list.append(num_list)
print(name_list) # ['itheima', 'itcast', 'python', [1, 2, 3]]
  • 删除元素
# 指定【下标】删除元素
# 语法1del 列表[下标]
# 语法2:列表.pop(下标)
​
name_list = ["itheima", "itcast", "python"]
del name_list[1]
print(name_list) # ['itheima', 'python']
​
# pop()方法可以将列表中index的元素取出来(删除),并返回(可用变量接收)
name_list = ["itheima", "itcast", "python"]
element = name_list.pop(1)
print(name_list) # ['itheima', 'python']
​
# 注意:python中一切皆对象,del是python中的关键字,用于删除对象(变量、列表或列表片段等)。
​
​
# 指定【元素】删除元素
# 语法:列表.remove(元素)
# 删除某元素在列表中的第一匹配项
name_list = ["python", "itheima", "java", "itcast", "python", "java", "c++"]
name_list.remove("java")
print(name_list) # ['python', 'itheima', 'itcast', 'python', 'java', 'c++']
​
​
# 清空列表
# 语法:列表.clear()
# 清空列表全部元素,只剩[]空列表
name_list = ["python", "itheima", "java", "itcast", "python", "java", "c++"]
name_list.clear()
print(name_list) # []
  • 统计元素在列表中的数量
# 语法:列表.count(元素)
name_list = ["python", "c", "java", "js", "python", "java", "c++", "python"]
count = name_list.count("python")
print(count) # 3
  • 统计容器内元素个数
# 语法:len(列表)
# 可以得到一个int数字,表示列表内元素的数量
name_list = ["python", "c", "java", "js", "python", "java", "c++", "python"]
count = len(name_list)
print(count) # 8
​
# 注意:len()是python中的内建函数
list特点
  • 可以容纳多个元素(上限为2 ^ 63 -1)
  • 可以容纳不同类型元素(混装)
  • 数据是有序存储的(有下标序号)
  • 允许重复数据存在
  • 可以修改(增加删除元素等)
列表的遍历 - while循环

将容器内的元素依次取出进行处理的行为,称为遍历或迭代

def list_while_fun():
    my_list = ["chuanzhi", "meima", "python"]
    index = 0
    
    while index < len(my_list):
        print(my_list[index])
        index += 1
        
def list_for_fun():
    my_list = ["chuanzhi", "meima", "python"]
    
    for element in my_list:
        print(element)
        
def list_for_2_fun():
    my_list = ["chuanzhi", "meima", "python"]
    
    for index in range(len(my_list)):
        print(my_list[index])

while循环和for循环,都是循环语句,但细节不同:

  • 在循环控制上:

    • while循环可以自定循环条件,并自行控制
    • for循环不可以自定循环条件,只可以一个个从容器内取出
  • 在无限循环上:

    • while循环可以通过条件控制实现无限循环
    • for循环理论上不可以,以为被遍历的容器容量不是无限的
  • 在使用场景上:

    • while循环适用于任何想要的循环场景
    • for循环适用于遍历数据容器的场景或简单的固定次数循环场景
思考
# del -- python关键字?
# len() -- python内建函数?