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

Python数据类型-list

在这里插入图片描述

列表(List)是Python中最常用的数据类型之一,它是一个有序、可变的元素集合。

1. 列表基础

创建列表

empty_list = []  # 空列表
numbers = [1, 2, 3, 4, 5]  # 数字列表
fruits = ['apple', 'banana', 'orange']  # 字符串列表
mixed = [1, 'hello', 3.14, True]  # 混合类型列表

访问元素

fruits = ['apple', 'banana', 'orange']
print(fruits[0])  # 输出: 'apple' (索引从0开始)
print(fruits[-1])  # 输出: 'orange' (负数表示从末尾开始)

2. 列表操作

修改元素

fruits = ['apple', 'banana', 'orange']
fruits[1] = 'pear'  # 修改第二个元素
print(fruits)  # 输出: ['apple', 'pear', 'orange']

添加元素

fruits = ['apple', 'banana']
fruits.append('orange')  # 在末尾添加
fruits.insert(1, 'pear')  # 在指定位置插入
print(fruits)  # 输出: ['apple', 'pear', 'banana', 'orange']

删除元素

fruits = ['apple', 'pear', 'banana', 'orange']
del fruits[1]  # 删除第二个元素
fruits.remove('banana')  # 删除指定值的元素
popped = fruits.pop()  # 删除并返回最后一个元素

3. 列表方法

常用方法

nums = [1, 2, 3, 4, 5]

nums.sort()  # 排序(原地修改)
nums.reverse()  # 反转(原地修改)
nums_copy = nums.copy()  # 创建副本
count = nums.count(2)  # 计算元素出现次数
index = nums.index(3)  # 查找元素索引

列表合并

list1 = [1, 2, 3]
list2 = [4, 5, 6]
combined = list1 + list2  # 使用+运算符
list1.extend(list2)  # 使用extend方法

4. 列表切片

基本切片

numbers = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]

print(numbers[2:5])  # 输出: [2, 3, 4] (索引2到5,不包括5)
print(numbers[:3])   # 输出: [0, 1, 2] (从开始到索引3)
print(numbers[5:])   # 输出: [5, 6, 7, 8, 9] (从索引5到末尾)
print(numbers[::2])  # 输出: [0, 2, 4, 6, 8] (步长为2)

5. 列表推导式

基本语法

# 创建一个0-9的平方列表
squares = [x**2 for x in range(10)]
print(squares)  # 输出: [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]

# 带条件的列表推导式
even_squares = [x**2 for x in range(10) if x % 2 == 0]

6. 列表与循环

遍历列表

fruits = ['apple', 'banana', 'orange']

# 直接遍历元素
for fruit in fruits:
    print(fruit)

# 遍历索引和元素
for index, fruit in enumerate(fruits):
    print(f"Index {index}: {fruit}")

7. 注意事项

  1. 列表是可变的,修改会影响所有引用该列表的变量
  2. 浅拷贝与深拷贝的区别
  3. 大列表操作可能消耗较多内存
  4. 查找操作(in, index)在长列表中较慢

8. 性能提示

  • 在开头插入/删除元素较慢(使用collections.deque替代)
  • 成员测试(in操作)在集合(set)中更快
  • 考虑使用生成器表达式处理大数据

相关文章:

  • 传统汽车 HMI 设计 VS 新能源汽车 HMI 设计,有何不同?
  • Spring Boot向Vue发送消息通过WebSocket实现通信
  • 解决ubuntu18.04无法进入系统桌面
  • 【文献阅读】Vision-Language Models for Vision Tasks: A Survey
  • Spark,HDFS概述
  • Android7 Input(三)EventHub
  • HTTP响应数据包全面解析:结构、原理与最佳实践
  • [GESP202503 C++六级题解]:P1196:环线
  • 基于Vue的低代码可视化表单设计器 FcDesigner 3.2.11更新说明
  • latex下载软件
  • 蓝桥杯准备(前缀和差分)
  • 【矩阵快速幂】P3702 [SDOI2017] 序列计数|省选-
  • C++ 新特性 | C++ 11 | 移动语义
  • 【huggingface 数据下载】ssh / https 不同的下载流程,hf 镜像下载注意事项
  • ⼆、Kafka客户端消息流转流程
  • Ubuntu环境安装
  • 【网安面经合集】42 道高频 Web 安全面试题全解析(附原理+防御+思路)
  • Java基础-25-继承-方法重写-子类构造器的特点-构造器this的调用
  • 基于langchain实现GraphRAG:基于图结构的检索增强生成系统
  • Linux(24)——系统调优
  • 扬子晚报原副总编辑俞适逝世,享年89岁
  • 马上评|去年维修竣工的鼓楼,今年就“瀑布式落瓦”
  • 印尼总统20年来首次访泰:建立战略伙伴关系,加强打击网络诈骗等合作
  • 专访《风雪夜归人》导演闫锐:在舞台上表现什么是真正的活着
  • 8000余万元黄金投入研发后“不知去向”,咋回事?
  • 印军称中国向巴基斯坦提供防空系统协助,外交部:中方十分重视与印、巴两国关系