欢迎光临
我们一直在努力

Python列表(List)全解析

一、什么是列表?

  • 定义:列表是一种有序、可变、允许重复元素的容器型数据结构。
  • 特点:
    • 用方括号 [] 表示;
    • 元素之间用逗号 , 分隔;
    • 可以包含任意类型的数据(整数、字符串、浮点数、甚至其他列表);
    • 支持索引和切片操作;
    • 属于可变对象(修改后 id 不变)。

a = [1, 2, 3.3, 'abcd', 5, "上山打老虎", [1, 2, 3], True]
print(type(a)) # <class 'list'>


二、列表的基本操作

1. 获取长度

使用 len() 函数获取列表中元素个数:

print(len(a)) # 输出:8

2. 索引取值(从 0 开始)

  • 正向索引:a[0], a[1], …, a[n-1]
  • 负向索引:a[-1](最后一个),a[-2](倒数第二个)

⚠️ 注意:索引越界会抛出 IndexError。

print(a[0]) # 1
print(a[-1]) # True

3. 通过值查找索引

使用 .index(value) 方法:

idx = a.index('abcd')
print(idx) # 3

  • 可指定搜索范围:.index(value, start, end)
  • 若元素不存在,抛出 ValueError

4. 遍历列表

for item in a:
print(item, type(item))

⚠️ 注意:若列表中有重复元素,a.index(item) 总是返回第一次出现的位置。


三、列表切片(Slice)

切片语法:list[start:end:step]

  • 包头不包尾(左闭右开)
  • start 默认为 0,end 默认为 len(list),step 默认为 1

a = [1, 2, 3.3, 'abcd', 5, "上山打老虎"]

print(a[1:4]) # [2, 3.3, 'abcd']
print(a[:3]) # [1, 2, 3.3]
print(a[3:]) # ['abcd', 5, '上山打老虎']
print(a[:]) # 完整复制(浅拷贝)

步长(Step)与反转

  • 正步长:从左到右
  • 负步长:从右到左(常用于反转)

print(a[::2]) # [1, 3.3, 5] # 每隔一个取一个
print(a[::-1]) # 反转整个列表
print(a[4:1:-1]) # [5, 'abcd', 3.3] # 倒序切片

✅ a[::-1] 是创建新列表;a.reverse() 是原地反转(不创建新对象)。


四、列表的增删改

✅ 添加元素

表格

方法说明示例
append(x) 在末尾添加一个元素 a.append(100)
extend(iterable) 将可迭代对象中的每个元素逐个加入 a.extend([7,8])
insert(i, x) 在索引 i 处插入元素 x a.insert(2, 'new')

❗ 区别:

  • append([1,2]) → 添加一个列表元素
  • extend([1,2]) → 添加两个独立元素

✏️ 修改元素

  • 单个修改:a[0] = 'new'
  • 批量修改(切片赋值):

lyst = ['大娃', '二娃', '三娃', '四娃']
lyst[2:4] = ['火娃', '水娃', '隐藏角色'] # 可替换为不同数量的元素
print(lyst) # ['大娃', '二娃', '火娃', '水娃', '隐藏角色']

❌ 删除元素

表格

方法说明
pop([i]) 删除并返回索引 i 的元素(默认最后一个)
remove(x) 删除第一个等于 x 的元素
clear() 清空列表(保留空列表对象)
del list[i] 删除指定位置元素(或整个列表)

a = [1, 2, 'abcd', 5]
a.pop() # 返回 5
a.remove('abcd') # 删除 'abcd'
a.clear() # a 变成 []


五、列表排序与反转

排序:sort()

  • 原地排序(不创建新列表)
  • 要求所有元素类型一致(否则报错)
  • 支持 reverse=True 降序

nums = [9, 3, 6, 1]
nums.sort() # [1, 3, 6, 9]
nums.sort(reverse=True) # [9, 6, 3, 1]

strs = ['ab', 'ac', 'a', 'd']
strs.sort() # 按字典序:['a', 'ab', 'ac', 'd']

🔍 字符串排序依据 Unicode 编码(可用 ord() 查看字符编码)。

反转:reverse() vs [::-1]

表格

方式是否原地是否新建对象
list.reverse() ✅ 是 ❌ 否
list[::-1] ❌ 否 ✅ 是

六、其他实用方法

统计元素出现次数:count()

my_list = [1, 2, 1, 3, 1]
print(my_list.count(1)) # 3

字符串与列表的转换(补充)

虽然不属于列表方法,但常配合使用:

# 列表 → 字符串(join)
words = ['Hello', 'World']
s = '-'.join(words) # 'Hello-World'

# 字符串 → 列表(split)
text = "a b c"
lst = text.split(' ') # ['a', 'b', 'c']

# 替换(replace)
new_text = text.replace(' ', '+') # "a+b+c"


七、常见误区提醒

  • 空列表不是 False

    b = [0, False, None]
    print(bool(b)) # True!只要非空,就是 True

  • index() 对重复元素只返回第一个位

    a = ['x', 'y', 'x']
    print(a.index('x')) # 0,不是 2

  • append vs extend 混淆

    • append 加“整体”
    • extend 加“拆开”
  • 切片赋值可改变列表长

    a = [1, 2, 3]
    a[1:2] = [10, 20, 30] # a 变成 [1, 10, 20, 30, 3]

  • 赞(0)
    未经允许不得转载:171主机测评 » Python列表(List)全解析
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址