Python基础 : 列表(List)

Python基础 : 列表(List)



一、知识点详解

1.1 列表的定义

List 是一种数据结构,可以存储多个元素。

  • 列表中的元素可以是任何数据类型(允许是混合类型)。
  • 列表用方括号[]表示,元素用逗号(, )分隔
  • 列表是可变的,可以添加、删除或修改元素。
  • 空列表 [] 对应布尔值 False,非空列表为 True

示例

empty_list = []
print(bool(empty_list))  # 空列表的布尔值为 False

mixed_list = ["苹果", 3, True]  # 混合类型列表
print(bool(mixed_list))  # 非空列表的布尔值为 True

1.2 索引与切片

  • 索引: 通过索引访问元素(索引从 0 开始)。
    在 Python 中,列表的索引操作提供了正向和反向两种方式,方便从不同方向访问元素。
索引方向示例说明
正向索引fruits[0]第一个元素(苹果)
反向索引fruits[-1]最后一个元素(True)
  • 切片: 切片用于获取一部分元素(生成新列表)。
    • 语法list[start:stop:step],其中start表示起始索引,stop表示结束索引,step表示步长(默认为 1)
    • 注意:列表的切片操作,同样遵循 左闭右开原则,即start能取到,stop取不到

示例

nums = [1, 2, 3, 4, 5]  
print(nums[1:3])   # [2, 3](取索引1到2,不包含3)  
print(nums[:3])    # [1, 2, 3](从开头到索引2)  
print(nums[2:])    # [3, 4, 5](从索引2到末尾)
print(nums[1:4:2])   # [2, 4](从索引1到3,每隔一个取一个)
print(nums[::])    # [1, 2, 3, 4, 5](复制列表)
print(nums[::2])   # [1, 3, 5](每隔一个取一个)
print(nums[::-1])  # [5, 4, 3, 2, 1](反转列表) 
print(nums[-2:])   # [4, 5](从倒数第二个到最后一个)
print(nums[-3:-1])  # [3, 4](从倒数第三个到倒数第二个,不包含最后一个)

new_nums = nums[::]  # 复制列表
print(new_nums)  # [1, 2, 3, 4, 5]
print(new_nums is nums)   # False(新列表)
print(new_nums == nums)  # True(内容相同)

1.3 基础操作

  • 修改元素:fruits[1] = "橘子"
    由于列表是可变的,通过索引可以直接修改列表中的元素。
    在修改元素时,要确保索引在列表的有效范围内,否则会引发IndexError异常。
  • 获取长度:len(fruits)
    len()函数用于返回列表中元素的数量,它是一个内置函数,使用方便。
    在处理列表时,经常需要知道列表的长度,以便进行循环遍历或索引操作。
  • 检查存在性:"苹果" in fruits
    in关键字用于检查某个元素是否存在于列表中,返回一个布尔值。
    这在判断列表中是否包含特定元素时非常有用。

1.4 添加元素

  • append():末尾追加单个元素
    append()方法会将一个元素添加到列表的末尾,该元素可以是任何数据类型
  • extend():合并另一个可迭代对象的元素
    extend()方法会将一个可迭代对象(如列表、元组、字符串等)的所有元素添加到列表的末尾
  • insert() : 指定索引位置插入元素
    insert()方法可以在列表的指定索引位置插入一个元素,原索引位置及之后的元素会依次后移

示例

nums = [1,2,3]
nums.append(4)      # [1,2,3,4]
nums.extend([5,6]) # [1,2,3,4,5,6]
nums.insert(3,'aaa') # [1,2,3,'aaa',4,5,6]

三种添加方式对比

方法作用参数结果注意事项
append(x)末尾追加单个元素单个元素 x元素添加到列表末尾添加列表时会形成嵌套列表(如 append([a,b])
extend(iter)合并可迭代对象的所有元素可迭代对象 iter元素拆解后逐个添加到末尾平级合并,不保留原可迭代对象结构
insert(i, x)指定索引 i 插入元素索引 i 和元素 x元素插入 i 处,后续元素后移索引超出范围时默认添加到末尾

1.5 删除元素

  • remove(x):删除列表中第一个匹配的元素 x
    直接指定要删除的元素值,而非索引
    若元素不存在,会引发 ValueError 异常

  • pop([i]):删除并返回返回被删除的元素(默认删除最后一个元素)
    参数 i 可选,省略时默认删除最后一个元素(等效于 pop(-1)
    索引越界会引发 IndexError 异常

  • del 列表[i]:通过索引删除指定位置的元素(或删除整个列表)
    i 为元素索引,支持正向(0 开始)和反向(-1 开始)索引
    也可删除切片(如 del 列表[1:3])或直接删除列表对象(del 列表

示例

# remove(x) 按值删除
nums = [1, 2, 2, 3]  # 原始列表包含重复元素 2
nums.remove(2)  # 删除第一个出现的 2
print(nums)  # 输出: [1, 2, 3]

# pop([i]) 按索引删除
nums = [1, 2, 3, 4, 5]  # 原始列表
removed = nums.pop(2)  # 删除索引为 2 的元素 (3)
print(nums)  # 输出: [1, 2, 4, 5]
print(removed)  # 输出: 3 (被删除的元素)
nums.pop()  # 默认删除最后一个元素 (5)
print(nums)  # 输出: [1, 2, 4]

# del 列表[i] 按索引/切片删除 
nums = [1, 2, 3, 4, 5]  # 原始列表
del nums[2]  # 删除索引为 2 的元素 (3)
print(nums)  # 输出: [1, 2, 4, 5]
del nums[1:3]  # 删除索引为 1 到 2 的元素 (2, 4)
print(nums)  # 输出: [1, 5]
del nums  # 删除整个列表
# print(nums)  # 若取消注释,会报错(NameError)

三种删除方式对比

方法操作依据返回值典型场景
remove(x)元素值(首个匹配)无(None)已知元素值,删除首次出现项
pop([i])索引(默认最后一个)返回删除的元素需要获取并删除指定位置元素
del 列表[i]索引/切片无(None)批量删除(切片)或销毁列表

二、说明示例

2.1 购物清单操作

# 购物清单操作
shopping_cart = ["苹果", "牛奶", "薯片"]
print("初始购物车:", shopping_cart)

# 索引与切片操作
print("购物车第一个商品:", shopping_cart[0])  # 正向索引
print("购物车最后一个商品:", shopping_cart[-1])  # 反向索引
print("购物车部分商品:", shopping_cart[0:1])  # 切片操作

# 修改元素
shopping_cart[1] = "酸奶"
print("修改后购物车:", shopping_cart)

# 获取购物车长度
print("购物车商品数量:", len(shopping_cart))

# 检查元素存在性
print("购物车是否有苹果:", "苹果" in shopping_cart)

# 添加元素
shopping_cart.append("面包")  # 末尾追加单个元素
print("追加面包后购物车:", shopping_cart)

shopping_cart.extend(["鸡蛋", "火腿肠"])  # 合并另一个可迭代对象的元素
print("添加鸡蛋和火腿肠后购物车:", shopping_cart)

shopping_cart.insert(2, "巧克力")  # 指定索引位置插入元素
print("插入巧克力后购物车:", shopping_cart)

# 删除元素
shopping_cart.remove("苹果")  # 按值删除第一个匹配的元素
print("移除苹果后购物车:", shopping_cart)

removed_item = shopping_cart.pop(1)  # 按索引删除元素并返回被删除的元素
print("移除索引为 1 的物品后购物车:", shopping_cart)
print("被移除的物品:", removed_item)

del shopping_cart[2]  # 通过索引删除指定位置的元素
print("删除索引为 2 的物品后购物车:", shopping_cart)

del shopping_cart[0:1]  # 通过切片删除部分元素
print("切片删除后购物车:", shopping_cart) 

三、知识点总结

  • 核心特性:可变、有序、任意类型、索引从 0 开始。
  • 常用操作
    • 添加:append()(单元素)、extend()(批量)、insert()(指定位置)。
    • 删除:remove()(按值)、pop()(按索引)、del(索引/列表)。
    • 其他:切片取值、len() 长度、in 存在性检查。
  • 注意点:避免索引越界(先检查 len()),区分 appendextend 的使用场景。

四、知识点考察题

以下哪项操作可以生成嵌套列表()

  • A.a =[1, 2]; a.extend([3, 4])
  • B.a =[1, 2]; a.append([3, 4])
  • C.a =[1, 2]; a += [3, 4]
  • D.a =[1, 2]; a[len(a):] = [3, 4]

答案:B


关注公众号「安于欣」获取更多Python技巧
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值