(Python基础篇)列表与元组的操作

一、引言

在 Python 编程中,列表(List)和元组(Tuple)是两种最常用的序列类型,它们如同程序中的 “数据容器”,能够有序存储多个元素,为数据的组织和处理提供了极大便利。列表以其灵活性支持动态修改,元组则以不可变性保障数据安全,二者各有特性,却又存在诸多共通的操作逻辑。掌握列表与元组的操作,是提升 Python 编程效率、构建复杂数据结构的基础。接下来,让我们一同探索列表与元组操作的核心知识。

二、列表与元组的基础特性与创建

(一)列表(List)的特性与创建

列表是一种可变序列,元素可以被修改、添加或删除,用方括号 [] 定义,元素之间用逗号分隔。其特性包括:

  • 元素可以是不同数据类型(如数字、字符串、列表等);

  • 支持动态调整长度;

  • 元素有序,可通过索引访问。

# 空列表
empty_list = []
# 同类型元素列表
nums = [1, 2, 3, 4, 5]
# 混合类型元素列表
mixed_list = [10, "python", True, [1, 2]]
# 通过列表推导式创建
squares = [x**2 for x in range(5)]  

(二)元组(Tuple)的特性与创建

元组是一种不可变序列,元素创建后无法修改,用圆括号 () 定义(单元素元组需加逗号避免歧义)。其特性包括:

  • 元素同样支持多类型,但创建后不可增删改;

  • 内存占用更小,访问速度更快;

  • 可作为字典的键(因不可变)。

创建示例

# 空元组
empty_tuple = ()
# 多元素元组
coords = (10, 20, 30)
# 单元素元组(必须加逗号)
single_tuple = (5,)
# 省略括号的元组(仅在无歧义时使用)
color_tuple = "red", "green", "skyblue"
# 嵌套元组
nested_tuple = (1, (2, 3), "a")

三、列表与元组的核心操作

(一)元素访问与切片

列表和元组均支持通过索引(从 0 开始)访问单个元素,或通过切片获取子序列,操作方式完全一致。

基本语法

  • 索引访问:序列[索引](负索引表示从末尾开始,如 -1 为最后一个元素);

  • 切片:序列[起始索引:结束索引:步长](包含起始索引,不包含结束索引,步长为间隔)。

示例

# 列表访问
fruits = ["apple", "banana", "cherry", "date"]
print(fruits[1])      
print(fruits[-2])     
print(fruits[1:3])   

# 元组访问
colors = ("red", "green", "blue", "yellow")
print(colors[2])      
print(colors[::2])    
(二)列表的特有操作(因可变性)

列表的可变特性使其拥有丰富的修改方法,主要包括元素添加、删除、修改等。

  1. 元素修改(直接通过索引重新赋值):

    nums = [1, 2, 3]
    nums[1] = 20  
    print(nums)   
    
  2. 元素添加

    • append(x):在列表末尾添加元素 x

    • insert(i, x):在索引 i 处插入元素 x

    • extend(iterable):将可迭代对象的元素逐个添加到列表末尾。

    fruits = ["apple"]
    fruits.append("banana")      
    fruits.insert(1, "orange")    
    fruits.extend(["cherry", "date"])  
    
  3. 元素删除

    • remove(x):删除第一个值为 x 的元素(若不存在则报错);

    • pop(i):删除索引 i 处的元素并返回该元素(默认删除最后一个);

    • del 列表[i]:删除索引 i 处的元素(无返回值)。

    fruits = ["apple", "orange", "banana"]
    fruits.remove("orange")  
    popped = fruits.pop()    
    del fruits[0]           
    
  4. 其他常用方法

    • sort():对列表排序(默认升序,reverse=True 为降序);

    • reverse():反转列表元素顺序;

    • count(x):统计元素 x 出现的次数。

    nums = [3, 1, 4, 1, 5]
    nums.sort()         
    nums.reverse()      
    print(nums.count(1)) 
    
  (三)元组的特有操作(因不可变性)元组因不可变,操作相对简单,主要用于查询元素信息。
  1. 不可修改的特性
    尝试修改元组元素会直接报错:

    coords = (10, 20)
    # 报错:TypeError: 'tuple' object does not support item assignment
    coords[0] = 15  
    
  2. 常用方法

    • index(x):返回第一个值为 x 的元素的索引(若不存在则报错);

    • count(x):统计元素 x 出现的次数。

    colors = ("red", "green", "red", "blue")
    print(colors.index("red")) 
    print(colors.count("red")) 
    
 (四)列表与元组的共通操作

        除上述特有操作外,列表和元组还支持以下共通操作:

  1. 长度计算len(序列) 返回元素个数;

  2. 成员判断x in 序列 判断元素 x 是否存在;

  3. 拼接与重复+ 拼接两个序列,*n 重复序列 n 次(元组拼接后仍为元组,列表同理)。

# 列表共通操作
list1 = [1, 2]
list2 = [3, 4]
print(len(list1))        
print(2 in list1)      
print(list1 + list2)     
print(list1 * 2)        

# 元组共通操作
tuple1 = (1, 2)
tuple2 = (3, 4)
print(len(tuple1))       
print(3 in tuple2)      
print(tuple1 + tuple2)  
print(tuple1 * 2)        

四、列表与元组的相互转换

列表和元组可通过内置函数相互转换,以满足不同场景需求:

  • 列表转元组:tuple(列表)

  • 元组转列表:list(元组)

示例

# 列表转元组
my_list = [1, 2, 3]
my_tuple = tuple(my_list)
print(my_tuple)  

# 元组转列表
my_tuple = ("a", "b", "c")
my_list = list(my_tuple)
print(my_list)  

五、列表与元组的应用场景

(一)列表的典型应用
  1. 动态数据存储:如购物车商品、用户输入的动态列表等,需要频繁添加或删除元素时使用。

    # 模拟购物车
    cart = []
    while True:
        item = input("请输入商品(输入q结束):")
        if item == "q":
            break
        cart.append(item)
    print(f"购物车商品:{cart}")
    
  2. 需要排序或修改的数据:如学生成绩排序、游戏排行榜等。

    scores = [85, 92, 78, 90]
    scores.sort(reverse=True)  # 降序排序
    print(f"成绩排名:{scores}")  
    
(二)元组的典型应用
  1. 存储不可变数据:如坐标信息、配置参数等,避免数据被意外修改。

    # 屏幕分辨率配置(固定不变)
    resolution = (1920, 1080)
    print(f"宽度:{resolution[0]},高度:{resolution[1]}")
    
  2. 函数返回多个值:Python 函数返回多个值时,本质是返回一个元组,可通过 “解包” 快速获取。

    def get_user_info():
        name = "Alice"
        age = 25
        gender = "female"
        return name, age, gender  # 隐式返回元组
    
    # 元组解包
    name, age, gender = get_user_info()
    print(f"姓名:{name},年龄:{age},性别:{gender}")
    
  3. 作为字典的键:因元组不可变,可作为字典的键,而列表不行。

    # 用元组作为键存储城市坐标
    city_coords = {
        ("北京",): (39.9042, 116.4074),
        ("上海",): (31.2304, 121.4737)
    }
    print(city_coords[("北京",)])  
    

六、总结

列表与元组作为 Python 中最基础的序列类型,虽特性不同(可变 vs 不可变),但共同承担着数据存储与组织的核心功能。列表以灵活性见长,适合处理动态变化的数据;元组以稳定性为优,适合存储固定不变的信息或作为哈希键。

掌握二者的创建、访问、修改(仅限列表)、转换等操作,以及各自的应用场景,能帮助我们在编程中选择更合适的数据结构,提升代码效率与可读性。无论是构建简单的任务列表,还是处理复杂的多维数据,列表与元组都是不可或缺的工具。希望通过本文的学习,你能熟练运用这两种序列类型,为后续的 Python 编程打下坚实基础。

你可能感兴趣的:(基础篇,python,windows,算法)