python列表的extend()函数用法详解

作为刚入门的小白,理解列表的 extend() 方法确实很重要,它看起来简单,但容易和一些类似操作搞混。我来给你掰开揉碎讲清楚。


1. extend() 是干什么的?

简单说:把一个“可迭代对象”里的每一个元素,逐个追加到列表的末尾。

关键词:“拆开”“逐个加进去”

比如你有一个列表ls = [1,2,3],你调用 ls.extend([4,5,6]),结果就变成 [1,2,3,4,5,6]。不是把 [4,5,6] 整个当一个元素加进去,而是把里面的 4、5、6 取出来一个一个放进去。

2. 基本语法

列表.extend(可迭代对象)
  • 可迭代对象:就是能一个接一个取出元素的东西,常见的有:
  • 列表(list)
  • 元组(tuple)
  • 字符串(str)
  • 集合(set)
  • 字典(dict)—— 注意这里 只会取出键(key)
  • 返回值None(没有返回值,直接修改原列表)
  • 效果:原列表被改变了,没有产生新列表。

3. 直观例子

先看最常用的——用另一个列表来扩展:

fruits = ['苹果', '香蕉']
more_fruits = ['橘子', '葡萄']

fruits.extend(more_fruits)
print(fruits)   # 输出:['苹果', '香蕉', '橘子', '葡萄']

再试一下其他可迭代对象:

nums = [1, 2, 3]

# 用元组扩展
nums.extend((4, 5))
print(nums)  # [1, 2, 3, 4, 5]

# 用字符串扩展
nums.extend('hi')
print(nums)  # [1, 2, 3, 4, 5, 'h', 'i']  注意,字符串被拆成单个字符了!

# 用集合扩展
nums.extend({6, 7})
print(nums)  # [1, 2, 3, 4, 5, 'h', 'i', 6, 7] (集合无序,6和7的顺序可能不同)

# 用字典扩展
nums.extend({'a': 1, 'b': 2})
print(nums)  # [1, 2, 3, 4, 5, 'h', 'i', 6, 7, 'a', 'b']  只加了键 'a' 和 'b'

可以看到,extend() 总会把参数掰开,再把里面每一个元素放进去。


4. 容易踩的坑(重点!)

① 不能传整数、浮点数等不可迭代对象

lst = [1,2,3]
lst.extend(4)   # ❌ TypeError: 'int' object is not iterable

因为数字 4 不是一个可以取出一串元素的东西,所以会报错。想单独加一个数字,用 append

extend() 返回的是 None,不要给它赋值

这是初学者常犯的错误:

a = [1,2,3]
a = a.extend([4,5])   # ❌ 这样 a 会变成 None
print(a)  # None

正确写法:直接调用,不要重新赋值。

a = [1,2,3]
a.extend([4,5])
print(a)  # [1, 2, 3, 4, 5]

③ 字符串被拆成单个字符

这可能不是你想要的。如果你想把整个字符串当成一个元素加进去,应该用 append,而不是 extend

words = ['hello']
words.extend(' world')   # 结果:['hello', ' ', 'w', 'o', 'r', 'l', 'd']  ❌
words = ['hello']
words.append(' world')   # 结果:['hello', ' world']  ✅

5. extend vs append(最重要的一张对比图)

操作效果
列表.append( x )x 当做一个整体,加到列表末尾
列表.extend( x )x 拆开,将其中的每一个元素逐个加到末尾
lst1 = [1,2,3]
lst1.append([4,5])
print(lst1)   # [1, 2, 3, [4, 5]]   → 整个列表当成了一个元素

lst2 = [1,2,3]
lst2.extend([4,5])
print(lst2)   # [1, 2, 3, 4, 5]     → 拆开,加了4和5

6. extend+ 运算符的区别

+ 也能合并列表,但会创建一个全新的列表,原列表不变:

a = [1,2,3]
b = a + [4,5]
print(a)  # [1, 2, 3]  原列表没变
print(b)  # [1, 2, 3, 4, 5]

extend 直接修改原列表,不会创建新对象,在处理大量数据时更省内存:

a = [1,2,3]
a.extend([4,5])
print(a)  # [1, 2, 3, 4, 5]   a 本身变了

7. 什么时候用 extend

  • 想把两个列表的内容无缝拼成一个列表。
  • 想批量添加很多元素到已有列表,但又不想用循环一个个 append(因为 extend 更快)。
  • 合并来自不同来源的同类型数据,比如读取两个文件的所有行、拼接查询结果等。
# 不用 extend,你可能会这样写(低效):
for item in another_list:
    my_list.append(item)

# 用 extend 一行搞定:
my_list.extend(another_list)

8. 小总结

  • extend(iterable):把参数里的每个元素 拆开加进去
  • 参数必须是可迭代对象(列表、元组、字符串等)。
  • 原地修改列表,返回 None
  • 相比 appendappend 加整体,extend 加元素。
  • 相比 ++ 创建新列表,extend 修改原列表(更省内存)。
  • 注意字符串会被拆成字符,字典只加键。

未经允许不得转载:445IT之家 » python列表的extend()函数用法详解

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏