当前位置: 首页 > news >正文

zsj_蓝桥python系列_列表补充

Python 列表进阶:那些你该掌握的核心操作

今天来复习下 Python 里最常用的数据结构之一 ——列表(List)的基础操作和拓展,温故才能知新~

一、列表的 3 种组合方式

1. “+”运算符:拼接两个列表
像拼字符串一样拼列表,会生成新列表,原列表不变。
优点:直观易懂
缺点:拼接大量数据时效率低(每次都新建列表)

list_b = [3, 4]
new_list = list_a + list_b
print(new_list)  # 输出 [1, 2, 3, 4]
print(list_a)    # 原列表不变:[1, 2]

*2. 运算符:重复列表元素
把列表里的元素重复指定次数,同样生成新列表,原列表不变。
适用场景:快速创建重复元素的列表

repeated_list = original_list * 3
print(repeated_list)  # 输出 [1, 2, 1, 2, 1, 2]
print(original_list)  # 原列表不变:[1, 2]

3. extend()方法:原地扩展列表
把另一个序列(列表、元组等)的元素直接添加到原列表末尾,修改原列表,无返回值。
优点:效率比+更高(不用新建列表)

list_b = [3, 4]
list_a.extend(list_b)
print(list_a)  # 原列表被修改:[1, 2, 3, 4]

二,元素查询:成员检查in/not in

想知道某个元素在不在列表里?用in(存在)或not in(不存在),返回布尔值True/False:

print("banana" in fruits)    # 检查存在:True
print("orange" not in fruits)# 检查不存在:True

三、元素删除:3 种常用方式

1. del语句:按索引 / 切片删除
del是 Python 的语句(不是方法),可以按索引或切片删除一个 / 多个元素,直接修改原列表,无返回值。
适用场景:明确知道要删除元素的索引 / 范围

del numbers[0]  # 删除索引0的元素
print(numbers)  # 输出 [20, 30, 40, 50]del numbers[1:3]  # 删除索引1-2的切片
print(numbers)    # 输出 [20, 50]

2. pop()方法:删除并返回元素
pop()是方法,删除指定索引的元素并返回它;省略索引时,默认删除并返回最后一个元素。
适用场景:需要 “取出” 元素并后续使用

removed_item = numbers.pop(1)  # 删除索引1的元素并返回
print(removed_item)  # 输出 20
print(numbers)       # 输出 [10, 30, 40]last_item = numbers.pop()  # 默认删除最后一个元素
print(last_item)      # 输出 40
print(numbers)        # 输出 [10, 30]

3. remove()方法:按值删除
remove()是方法,按 “值” 删除列表中第一个匹配到的元素,直接修改原列表,无返回值。
注意:若要删除的值不存在,会抛出ValueError

numbers.remove(20)  # 删除第一个20
print(numbers)      # 输出 [10, 30, 20, 40]

4. clear()方法:清空整个列表
clear()是方法,用于移除列表中所有元素,将列表变为空列表,是 “就地” 操作,无返回值。
效果等同于 del list[:]
适用场景:需要快速清空列表,保留列表对象本身

print(f"Original: {numbers}")  # 输出 Original: [10, 20, 30]
numbers.clear()
print(f"After clear: {numbers}")  # 输出 After clear: []
print(f"Length now: {len(numbers)}")  # 输出 Length now: 0

四、列表整理:反转与排序

1. reverse():就地反转列表
reverse()是方法,会直接修改原列表,将元素顺序反转,无返回值。
和反向切片[::-1]的区别:切片会生成新列表,reverse()是原地修改

print(f"Original: {nums}")  # 输出 Original: [1, 2, 3, 4]
nums.reverse()
print(f"After reverse: {nums}")  # 输出 After reverse: [4, 3, 2, 1]

2. sort():就地排序列表
sort()是方法,默认对列表进行升序排序,直接修改原列表,无返回值。
后续可学习降序、自定义排序规则等进阶用法

print(f"Original: {nums}")  # 输出 Original: [3, 1, 4, 1, 5, 9, 2]
nums.sort()
print(f"After sort: {nums}")  # 输出 After sort: [1, 1, 2, 3, 4, 5, 9]

3. sorted():生成排序后的新列表
sorted()是内置函数,对可迭代对象(如列表)排序后,返回新的排序列表,原列表保持不变。
适用场景:不想修改原列表时更安全

print(f"Original nums: {nums}")  # 输出 Original nums: [3, 1, 4, 1, 5, 9, 2]
new_list = sorted(nums)
print(f"New sorted list: {new_list}")  # 输出 New sorted list: [1, 1, 2, 3, 4, 5, 9]
print(f"Original nums is unchanged: {nums}")  # 原列表不变

五、列表复制:避开 “引用赋值” 的陷阱

1. 错误方式:直接赋值(引用赋值)
用=直接赋值,不会创建新列表,只是让两个变量指向同一个列表对象。修改其中一个,另一个也会跟着变:

b = a  # 只是引用同一列表
b.append(4)
print(f"List a: {a}")  # 输出 List a: [1, 2, 3, 4](a也被修改了)
print(f"List b: {b}")  # 输出 List b: [1, 2, 3, 4]

2. 正确方式:创建浅拷贝
要得到 “内容相同但独立” 的新列表,需显式创建副本(浅拷贝),常用两种方法:
方法一:copy()方法
方法二:完整切片[:]
这两种方式都会生成新列表,修改副本不会影响原列表:

b = a.copy()    # 方法一:copy()
c = a[:]        # 方法二:完整切片
b.append(4)
c.append(5)
print(f"List a: {a}")  # 原列表不变:[1, 2, 3]
print(f"List b: {b}")  # 副本b:[1, 2, 3, 4]
print(f"List c: {c}")  # 副本c:[1, 2, 3, 5]

注意:浅拷贝的局限性
如果列表中包含嵌套列表(比如a = [[1,2], 3]),浅拷贝只会复制外层列表的引用,嵌套部分仍会共享。这种情况需要用 “深拷贝”,后续跟进学习~

http://www.gsyq.cn/news/143503.html

相关文章:

  • Pandas 安装指南
  • PS2025下载安装教程超详细保姆级全攻略(附安装包下载)Photoshop 2025 v26.0版本安装教程
  • 基于Vue的问诊平台管理系统0jbb3(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
  • 收藏必备!六个高含金量编程竞赛助你进大厂+网络安全学习资源大放送
  • 专家的进阶之路:技术深耕、跨界融合与个人品牌打造 - AK
  • LeetCode刷题记录—[933]最近请求次数
  • 网络安全与数据安全区别详解:黑客小白必收藏学习资源
  • C++ 继承
  • 软件工程实践学期总结
  • 【数学】反三角函数
  • EPLAN电气设计:EPLAN端子排创建全攻略
  • MongoDB 删除文档
  • 背景调查:中小企业合规管理的坚固基石
  • 第五天—日期问题
  • CF1051G
  • Excel表格大全:模板+教程合集(每日更新)
  • csq-蓝桥杯python-基础语法3-循环语句进阶
  • csq-蓝桥杯python-基础语法3-循环语句进阶
  • 论文写作必备神器:7款AI工具实测,30分钟生成1万字真实参考文献
  • 2026主管护师考试视频课深度测评:阿虎医考王者强训班成为优选课程 - 资讯焦点
  • 20、应用盈利与上架Windows应用商店全攻略
  • 【Unity】未来技术路线
  • HarmonyOS 5开发从入门到精通(十八):新闻阅读应用实战(下)
  • 21、将应用推向Windows应用商店的全面指南
  • 实用指南:电脑摄像头打不开?【图文详解】电脑摄像头怎么安装使用?电脑摄像头怎么打开?电脑怎么打开摄像头?
  • Java毕设项目推荐-基于springboot+vue的社区资源共享系统设计与实现闲置物品置换、宠物托管等互助信息【附源码+文档,调试定制服务】
  • Walrus Haulout 黑客松获胜名单揭晓
  • 【Unity】骨骼动画
  • 年底多跑跑前端面试就会发现…
  • 10366_基于Springboot的课程管理系统