列表型对象 (List)

一. 列表基础

1. 列表创建

list可以存储任意类型对象

(1).直接创建
lst = [1, 2, 3, 4]
(2).列表推导式
①.表推导式的语法结构
  • 基本形式:

    [表达式 for 变量 in 可迭代对象]
    
  • 带条件:

    [表达式 for 变量 in 可迭代对象 if 条件]
    

    例子:

    [x for x in range(10) if x % 2 == 0]
    

    含义:

    从 0~9 中选出能被 2 整除的数字,然后把它们放到列表里。

    输出结果:

    [0, 2, 4, 6, 8]
    
②.创建列表
  1. 无条件

    lst = [x * 2 for x in range(5)]
    
  2. 可加入条件过滤

    lst = [x for x in range(10) if x % 2 == 0]  # 偶数列表
    
(3).使用list() 和range()

range() 用于生成整数序列,语法:

range(start, stop, step)
①.只有一个参数版本:range(stop)
range(5)  -> 0, 1, 2, 3, 4

默认 start = 0,step = 1。

②.两个参数版本:range(start, stop)
range(2, 7)  -> 2, 3, 4, 5, 6

不包含 stop元素。

③.三个参数版本:range(start, stop, step)
range(1, 10, 2)  -> 1, 3, 5, 7, 9
range(10, 0, -2) -> 10, 8, 6, 4, 2
  • step 可为正或负
  • 不包含 stop元素。

例子

lst = list(range(5))

生成:

[0, 1, 2, 3, 4]

也可设置步长:

lst = list(range(1, 10, 2))  # [1, 3, 5, 7, 9]

2. 基础索引与切片

列表的索引和切片规则与字符串完全一致,但列表是可变对象,支持通过索引修改元素。

  • 正向索引ls[1] 获取第二个元素。
  • 反向索引ls[-1] 获取最后一个元素。
  • 切片ls[1:3] 获取索引1到2的元素。
  • 步长切片ls[1:4:2] 每隔一个取一个。
  • 反向切片ls[::-2] 反向取奇数位。

3. 列表的可变性

与字符串不同,列表可以通过索引直接修改内部元素:

l = [0, 1, 2]
l[0] = 1  # 修改第一个元素为1
print(l)  # 输出: [1, 1, 2]

4. 列表是有序的

不同排列顺序是不同列表

二. 列表方法

1. 运算符

列表支持加法 + 和乘法 * 运算符。

  • 加法 (+):将两个列表合并,顺序不变,重复元素保留。
  • 乘法 (*):将列表元素复制并拼接。

2. 添加元素

(1).append - 追加单个元素

作用:在列表末尾追加一个对象,一次只能追加一个元素。注:可以追加任意类型,如列表、函数等作为独立的一个元素。

list.append(obj)

参数:

  • 对象 (obj): 需要追加到列表末尾的具体元素。(在 Python 中,obj (对象) 指代的是“任意数据类型(Any)”。)

返回值:

  • 成功: 无返回值 (NoneType),直接在原列表对象上进行修改。

示例:

l = [0, 1, 2]
# 在末尾追加元素3
l.append(3) 
# l 变为 [0, 1, 2, 3]

(2).extend - 追加多个元素

作用:在列表末尾追加多个对象,将其元素逐一加入。

list.extend(iterable)

参数:

  • 可迭代对象 (iterable): 参数必须是可迭代对象(Iterable,如 list、tuple、str 等)。即便只添加一个元素,也应当将其置于一个可迭代容器中(如列表)。

返回值:

  • 成功: 无返回值 (NoneType),直接在原列表对象上进行修改。

示例:

l = [0, 1, 2, 3]
# 将 [4, 5] 中的元素逐一追加
l.extend([4, 5]) 
# l 变为 [0, 1, 2, 3, 4, 5]

(3).insert - 指定位置插入

作用:在指定索引位置插入一个对象,一次只能插入一个元素,原有元素依次后移。

list.insert(index, obj)

参数:

  • 索引 (index): 指定要插入元素的下标位置(int)。
  • 对象 (obj): 需要被插入的具体元素(Any)。

返回值:

  • 成功: 无返回值 (NoneType),直接在原列表对象上进行修改。

示例:

l = [0, 1, 2, 3, 4, 5]
# 在索引1的位置插入列表 [8, 9]
l.insert(1, [8, 9]) 
# l 变为 [0, [8, 9], 1, 2, 3, 4, 5]

3. 删除元素

(1).pop - 弹出指定索引元素

作用:删除并返回列表中指定索引位置的元素。

list.pop(index=-1)

参数:

  • 索引 (index): 需要被删除元素的下标(int)。默认值为 -1,即默认删除最后一个元素 (pop())。

返回值:

  • 成功: 返回被成功删除的那个元素对象(Any)。

示例:

l = [0, 1, 2, 3, 4]
# 删除最后一个元素,并将其赋值给 val
val = l.pop() 
# val 变为 4,l 变为 [0, 1, 2, 3]

(2).remove - 按值删除元素

作用:删除列表中第一个出现的指定值。

list.remove(value)

参数:

  • 值 (value): 需要删除的目标内容(Any)。注:如果该值出现多次,remove函数只会删除第一次出现的value;如果元素不存在会报错。

返回值:

  • 成功: 无返回值 (NoneType),直接在原列表对象上进行修改。

示例:

l = [0, 1, 2, 2, 4]
# 删除列表中出现的第一个值 2
l.remove(2) 
# l 变为 [0, 1, 2, 4]

(3).del - 通用删除命令

作用:Python自带的通用删除语句,可用于删除指定索引的元素、切片或直接销毁整个列表对象。

del list[index]
del list[start:end]
del list

参数:

  • 目标对象: 可以是列表元素的索引(int)、切片范围(slice)或列表变量名本身(list)。

返回值:

  • 成功: 无返回值(NoneType),直接从内存中删除相关对象或元素。

示例:

l = [0, 1, 2, 3, 4]
del l[0]    # 删除索引0的元素
del l[1:]   # 删除一个切片
del l       # 删除整个列表对象

(4).clear - 清空列表

作用:清空列表中的所有元素,使其变为空列表 []

list.clear()

参数:

  • 无参数(None)。

返回值:

  • 成功: 无返回值 (NoneType),原列表变为空列表。

示例:

l = [0, 1, 2]
# 清空列表内的所有元素
l.clear() 
# l 变为 []

4. 查找元素

(1).index - 查找首次出现的索引

作用:返回指定值在列表中第一次出现的索引位置。

list.index(value, start=0, end=len(list))

参数:

  • 值 (value): 需要查找的目标元素(Any)。
  • 起始索引 (start): 可选,查找区间的起点(包含)(int)。
  • 结束索引 (end): 可选,查找区间的终点(不包含)(int)。

返回值:

  • 成功: 返回查找到的第一次出现的整数下标(int)。找不到则报错。

示例:

l = list("Hello")
# 查找字符 'e' 第一次出现的索引
idx = l.index('e') 
# idx 变为 1

(2).count - 统计元素次数

作用:统计指定值在列表中出现的总次数。

list.count(value)

参数:

  • 值 (value): 需要被统计的目标元素(Any)。

返回值:

  • 成功: 返回该元素在列表中出现的整数次数(int)。

示例:

l = list("Hello")
# 统计字符 'l' 在列表中出现的次数
cnt = l.count('l') 
# cnt 变为 2

(3).in 关键字 - 判断元素是否存在

作用:判断某元素是否存在于列表中。

value in list

参数:

  • 值 (value): 需要判断的目标元素(Any)。
  • 列表 (list): 被查找的目标容器(list)。

返回值:

  • 成功: 存在返回布尔值 True,不存在返回 False(bool)。

示例:

l = list("Hello")
# 判断字符 'H' 是否在列表 l 中
has_H = 'H' in l 
# has_H 为 True

5. 排序

(1).sort - 列表排序

作用:对列表进行原地排序(直接修改原列表),默认按升序排列。

list.sort(key=None, reverse=False)

参数:

  • 排序规则 (key): 接收一个函数用于自定义排序逻辑(Callable 或 None,默认 None)。
  • 反转标志 (reverse): 接收布尔值(bool)。默认 False (升序),设置为 True 可进行降序排序。

返回值:

  • 成功: 无返回值 (NoneType),直接在原列表对象上进行修改。

示例:

l = [1, 0, 2, 3]
l.sort()              # 升序排序,变为 [0, 1, 2, 3]
l.sort(reverse=True)  # 降序排序,变为 [3, 2, 1, 0]

6. 反转

(1).reverse - 列表反转

作用:将列表中的元素进行原地反转(头尾互换)。

list.reverse()

参数:

  • 无参数(None)。

返回值:

  • 成功: 无返回值 (NoneType),直接在原列表对象上进行修改。

示例:

l = [3, 2, 1, 0]
# 将列表元素前后位置翻转
l.reverse() 
# l 变为 [0, 1, 2, 3]

更多推荐