零基础学 Python——List(列表)与 Tuple(元组)

各位亦菲彦祖,你们好呀!相信在之前的学习中,你们已经对 Python 的基础语法、数据类型,以及流程控制语句有了一定的了解,也慢慢尝试着使用内置函数来让代码更为简洁高效。那么今天,让我们继续展开 Python 学习的新篇章,来探讨 Python 最常见、最常用的两个数据容器:List(列表)Tuple(元组)。这两位“容器大咖”不仅能帮我们存放数据,还能让我们对数据进行灵活多变的处理,可谓是每位 Python 初学者必须好好掌握的关键知识点。


一、List(列表)

1. List 的创建与基本特性

List(列表) 是一个“可变”的序列容器,它能够存放任意类型的对象。所谓“可变”,是指我们可以随时改变列表的元素(添加、删除、修改等),就好像一个拥有伸缩功能的百宝箱,既能往里塞东西,也能拿出来扔掉,随心所欲。

  • 列表的创建

    # 1. 直接使用方括号创建
    names = ["Alice", "Bob", "Tom"]
    
    # 2. 使用内置函数 list() 创建
    numbers = list((1, 2, 3))   # 传入元组,转换为列表
    empty_list = list()         # 创建一个空列表
    
  • 列表中的元素类型可以混合

    mixed_list = [1, "Python", 3.14, True]
    print(mixed_list)  # 输出:[1, 'Python', 3.14, True]
    

    这种“海纳百川”的特点,使得列表在处理不同类型数据时变得十分灵活。


2. 访问与操作列表元素

2.1 索引与切片
  • 索引:列表中的每个元素都有一个对应的索引(Index),从 0 开始。

    fruits = ["apple", "banana", "cherry"]
    print(fruits[0])   # 输出:"apple"
    print(fruits[-1])  # 输出:"cherry"(支持负索引)
    
  • 切片:可以通过切片操作获取列表中的一个或多个元素,并生成一个新的列表。

    numbers = [10, 20, 30, 40, 50]
    print(numbers[1:4])   # 输出:[20, 30, 40]
    print(numbers[:3])    # 输出:[10, 20, 30]
    print(numbers[2:])    # 输出:[30, 40, 50]
    print(numbers[::2])   # 输出:[10, 30, 50]
    

    切片不仅在列表里,字符串、元组等其他序列类型中也适用哦!

2.2 更新列表元素

列表是可变的,所以我们可以通过索引来修改或替换元素:

numbers = [1, 2, 3, 4]
numbers[1] = 20
print(numbers)  # 输出:[1, 20, 3, 4]

让你的容器随时“整形”,满足日常需求。


3. 常用列表方法

Python 为列表这个强大的容器准备了许多实用的方法,帮助我们更便捷地操作数据。

  1. append(x):在列表末尾追加元素 x

    pets = ["cat", "dog"]
    pets.append("fish")
    print(pets)  # 输出:["cat", "dog", "fish"]
    
  2. insert(index, x):在指定位置 index 插入元素 x

    pets.insert(1, "rabbit")
    print(pets)  # 输出:["cat", "rabbit", "dog", "fish"]
    
  3. extend(iterable):将另一个可迭代对象(如列表)中的所有元素添加到当前列表末尾。

    pets.extend(["bird", "turtle"])
    print(pets)  # 输出:["cat", "rabbit", "dog", "fish", "bird", "turtle"]
    
  4. remove(x):删除列表中出现的第一个元素 x

    pets.remove("dog")
    print(pets)  # 输出:["cat", "rabbit", "fish", "bird", "turtle"]
    
  5. pop([index]):移除并返回指定索引位置上的元素,若不指定索引,默认移除并返回最后一个元素。

    last_pet = pets.pop()
    print(last_pet)  # 输出:"turtle"
    print(pets)      # 输出:["cat", "rabbit", "fish", "bird"]
    
  6. clear():清空列表中所有元素,变成一个空列表。

    pets.clear()
    print(pets)  # 输出:[]
    
  7. index(x):返回元素 x 在列表中的索引位置,如果元素不存在则会报错。

    numbers = [10, 20, 30, 40]
    print(numbers.index(20))  # 输出:1
    
  8. count(x):统计元素 x 在列表中出现的次数。

    letters = ["a", "b", "a", "c", "a"]
    print(letters.count("a"))  # 输出:3
    
  9. sort(key=None, reverse=False):对列表进行原地排序,可以通过参数 reverse=True 指定倒序。

    numbers = [3, 1, 4, 2]
    numbers.sort()
    print(numbers)  # 输出:[1, 2, 3, 4]
    

    如果你不想改变原列表,又想得到排好序的新列表,可以用内置函数 sorted()

  10. reverse():原地反转列表。

    numbers = [1, 2, 3]
    numbers.reverse()
    print(numbers)  # 输出:[3, 2, 1]
    

小结:列表方法非常丰富,可以灵活地应对各种场景。一旦熟练掌握,就能“百变操控”你的数据容器,让你的代码处处井井有条!


二、Tuple(元组)

1. Tuple 的创建与基本特性

Tuple(元组) 和列表有很多相似之处,同样是一个有序的序列容器,可以存放任意类型的对象。最大的区别在于:元组是不可变的(immutable),一旦创建,就不能再对它进行添加、删除、修改等操作。

  • 元组的创建

    # 1. 使用小括号
    coordinates = (10, 20)
    
    # 2. 不加括号,逗号分隔的形式(Python 会自动识别)
    colors = "red", "green", "blue"
    
    # 3. 使用 tuple() 函数
    from_list = tuple([1, 2, 3])   # 将列表转换成元组
    empty_tuple = tuple()          # 创建空元组
    
  • 单个元素的元组:如果你想定义一个只有一个元素的元组,必须在元素后面加一个逗号,否则会被识别为普通变量。

    single = (100,)  # 这样才是元组
    not_tuple = (100)  # 只是一个整数 100
    

2. 访问与操作元组元素

  • 索引与切片:元组也支持索引和切片操作,使用方法与列表一致。

    fruit_tuple = ("apple", "banana", "cherry")
    print(fruit_tuple[1])    # 输出:"banana"
    print(fruit_tuple[:2])   # 输出:("apple", "banana")
    
  • 不可变性:你不能像列表那样修改、追加或删除元组中的元素,一旦尝试,就会抛出错误。例如:

    numbers = (1, 2, 3)
    # numbers[0] = 10  # 会报错:TypeError: 'tuple' object does not support item assignment
    

3. 元组的用途

尽管元组不可变,但在某些场景下仍然十分有用:

  1. 数据安全:因为不可变性,元组可以防止数据被意外修改。
  2. 解包:在函数返回多个值时,经常使用元组来“打包”返回,然后通过解包一次性获取多个值。
    def get_position():
        return (10, 20)
    
    x, y = get_position()  
    print(x, y)  # 输出:10 20
    
  3. 字典键:元组可作为字典的键,而列表不行(因为列表是可变对象,元组是不可变对象)。
    my_dict = {("x", "y"): "坐标", ("a", "b"): "字母组合"}
    print(my_dict[("x", "y")])  # 输出:"坐标"
    

三、List 与 Tuple 的共同点与区别

  1. 共同点

    • 都是有序序列,可通过索引访问其元素。
    • 支持切片操作。
    • 能容纳任意类型的数据。
  2. 区别

    • 可变性:列表可变,元组不可变。
    • 用途:列表常用于需要频繁修改数据的场景;元组更适合“只读”或“固定”的数据存放场景。

四、综合示例:一起操作列表和元组

让我们做一个小示例,回顾一下如何在真实场景下同时使用列表和元组:

def record_people_info():
    # 用列表存储多个用户的个人信息,因其需要被随时添加或删除
    people = []
    
    while True:
        name = input("请输入姓名(输入q退出):")
        if name.lower() == "q":
            break
        
        age = input("请输入年龄:")
        
        # 将姓名和年龄打包成一个元组(因为这些信息是固定的,不希望被修改)
        info = (name, int(age))
        
        # 放入列表进行保存
        people.append(info)
    
    return people

# 使用示例
all_people = record_people_info()
print("记录的信息如下:")
for person in all_people:
    # person 是一个元组 (name, age)
    print(f"姓名:{person[0]},年龄:{person[1]}")

在这个示例中:

  • 我们用列表people)动态地存储了多个用户的信息——列表方便随时添加新条目。
  • 我们用元组info)来存放每个人的姓名和年龄,避免了意外修改的可能,也让结构更清晰。

五、结语

各位亦菲彦祖,对于 Python 中的 ListTuple,我们可以把它们想象为两个个性鲜明的容器:

  • List 就像一个万能的行李箱,可以随时增添、取出或者整理物品。
  • Tuple 则像一个精致的行李封包,打好包之后基本不动刀动枪,只在需要时进行查看或复制。

在日常的编程中,如何灵活运用它们是我们必须不断思考和练习的。要想学得更扎实,可以尝试:

  1. 多写一些小练习,比如添加、删除、修改列表中的元素,对元组进行解包操作等。
  2. 结合之前学到的 if/elseforwhile 语句与 内置函数,让程序变得更加生动有趣。
  3. 在实战项目中思考:什么时候应该使用列表,什么时候应该使用元组?只有不断的思考和实践,才能真正融会贯通。

至此,亦菲彦祖们,你们已经掌握了 Python 中的两大容器:List 和 Tuple! 只要多加练习,相信你们会越用越顺手。在下一步的学习中,我们还会接触更多类型的容器,比如集合(Set)和字典(Dictionary),它们同样能为我们的编程旅程增添色彩。希望你们继续保持好奇心,脚踏实地,跟我一起把 Python 学得更透、更有趣!

如有疑问或心得,欢迎在评论区分享哦!让我们下次见吧,继续加油,奥利给!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

杨胜增

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值