python基础:使用list和tuple

使用list和tuple

列表(List)

列表是Python中最基本的数据结构之一,它是一个有序的可变集合,可以存储不同类型的元素。

创建列表

python 复制代码
# 创建一个包含字符串的列表
classmates = ['Michael', 'Bob', 'Tracy']
print(classmates)  # 输出: ['Michael', 'Bob', 'Tracy']

# 创建一个包含不同类型元素的列表
mixed_list = ['Apple', 123, True, 3.14]
print(mixed_list)

# 创建空列表
empty_list = []
print(empty_list)  # 输出: []

访问列表元素

python 复制代码
# 使用索引访问元素(从0开始)
print(classmates[0])  # 输出: 'Michael'
print(classmates[1])  # 输出: 'Bob'

# 使用负数索引从末尾访问
print(classmates[-1])  # 输出: 'Tracy' (最后一个元素)
print(classmates[-2])  # 输出: 'Bob' (倒数第二个元素)

# 索引越界会引发IndexError
# print(classmates[3])  # 会报错

列表操作

获取列表长度
python 复制代码
print(len(classmates))  # 输出: 3
修改元素
python 复制代码
classmates[1] = 'Sarah'
print(classmates)  # 输出: ['Michael', 'Sarah', 'Tracy']
添加元素
python 复制代码
# 在末尾添加元素
classmates.append('Adam')
print(classmates)  # 输出: ['Michael', 'Sarah', 'Tracy', 'Adam']

# 在指定位置插入元素
classmates.insert(1, 'Jack')
print(classmates)  # 输出: ['Michael', 'Jack', 'Sarah', 'Tracy', 'Adam']
删除元素
python 复制代码
# 删除末尾元素
last_element = classmates.pop()
print(last_element)  # 输出: 'Adam'
print(classmates)    # 输出: ['Michael', 'Jack', 'Sarah', 'Tracy']

# 删除指定位置元素
second_element = classmates.pop(1)
print(second_element)  # 输出: 'Jack'
print(classmates)      # 输出: ['Michael', 'Sarah', 'Tracy']

嵌套列表

列表可以包含其他列表,形成多维数据结构:

python 复制代码
# 二维列表
matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9]
]
print(matrix[1][1])  # 输出: 5

# 混合嵌套
nested_list = ['python', 'java', ['asp', 'php'], 'scheme']
print(nested_list[2][1])  # 输出: 'php'

列表切片

Python提供了强大的切片操作来访问列表的子集:

python 复制代码
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] (每隔一个元素)
print(numbers[1::2])  # 输出: [1, 3, 5, 7, 9]

# 反向切片
print(numbers[::-1])  # 输出: [9, 8, 7, 6, 5, 4, 3, 2, 1, 0] (反转列表)

元组(Tuple)

元组是另一种有序集合,与列表类似,但不可变(immutable)。

创建元组

python 复制代码
# 创建包含多个元素的元组
classmates = ('Michael', 'Bob', 'Tracy')
print(classmates)  # 输出: ('Michael', 'Bob', 'Tracy')

# 创建单个元素的元组(必须加逗号)
single_tuple = (1,)
print(single_tuple)  # 输出: (1,)

# 创建空元组
empty_tuple = ()
print(empty_tuple)  # 输出: ()

# 不加逗号会创建普通变量,不是元组
not_a_tuple = (1)
print(not_a_tuple)  # 输出: 1 (整数)

访问元组元素

python 复制代码
print(classmates[0])  # 输出: 'Michael'
print(classmates[-1])  # 输出: 'Tracy'

# 元组不可变,以下操作会报错
# classmates[0] = 'Adam'  # TypeError
# classmates.append('Jack')  # AttributeError

元组的不可变性

元组的不可变性是指元组中的元素引用不可变,但如果元素本身是可变对象(如列表),其内容可以改变:

python 复制代码
mixed_tuple = ('a', 'b', ['A', 'B'])
mixed_tuple[2][0] = 'X'  # 可以修改列表元素
print(mixed_tuple)  # 输出: ('a', 'b', ['X', 'B'])

# 但不能替换整个列表
# mixed_tuple[2] = ['C', 'D']  # 会报错

元组解包

Python支持元组解包,可以方便地同时给多个变量赋值:

python 复制代码
point = (3, 4)
x, y = point
print(x, y)  # 输出: 3 4

# 交换变量值
a, b = 1, 2
a, b = b, a
print(a, b)  # 输出: 2 1

列表与元组的比较

特性 列表(List) 元组(Tuple)
可变性 可变 不可变
语法 方括号[] 圆括号()
性能 稍慢 更快
适用场景 需要修改的数据 固定数据
内存占用 较大 较小

练习

python 复制代码
L = [
    ['Apple', 'Google', 'Microsoft'],
    ['Java', 'Python', 'Ruby', 'PHP'],
    ['Adam', 'Bart', 'Bob']
]

# 打印Apple:
print(L[0][0])  # 输出: Apple

# 打印Python:
print(L[1][1])  # 输出: Python

# 打印Bob:
print(L[2][2])  # 输出: Bob

# 判断哪些是元组
a = ()        # 元组
b = (1)       # 不是元组
c = [2]       # 列表
d = (3,)      # 元组
e = (4,5,6)   # 元组

总结

  1. 列表是可变的,使用方括号[]定义,支持增删改操作
  2. 元组是不可变的,使用圆括号()定义,适合存储不应修改的数据
  3. 两者都支持索引和切片操作
  4. 元组比列表更轻量,性能更好
  5. 在实际编程中,应根据数据是否需要修改来选择使用列表或元组

掌握列表和元组的使用是Python编程的基础,它们在数据处理、函数返回多个值等场景中都有广泛应用。

想要解锁更多 Python 实战黑科技?搜索「道满PythonAI」,海量免费教程随你练,边学边练进步更快! 下一篇想学 Python 什么内容?评论区告诉我!觉得有用就点赞 + 关注,持续更新干货~ 私信【111】进入技术交流群

相关推荐
测试老哥2 小时前
Web自动化测试:Cypress 测试框架概述
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
曲幽2 小时前
FastAPI项目半夜报警吵醒你?聊聊告警这事儿怎么搞!
python·logging·fastapi·web·monitoring·webserver·health·uptimerobot
Bert.Cai2 小时前
Python模块简介
开发语言·python
2501_924952692 小时前
自动化机器学习(AutoML)库TPOT使用指南
jvm·数据库·python
Thomas.Sir2 小时前
第二章:Python3 之 列表与元组
python·列表·元组
忘忧记3 小时前
Fixture详解
开发语言·python
echome8883 小时前
Python 装饰器实战:用@syntax 优雅地增强函数功能
开发语言·python
路小雨~3 小时前
如何快速用测试用例来入门一个项目
python
不良人天码星3 小时前
GUI自动化基础(一)
python·ui·自动化
卷Java3 小时前
Python字典:键值对、get()方法、defaultdict,附通讯录实战
开发语言·数据库·python