《Python从入门到实践》读书笔记——第三章 列表简介

本文介绍了Python中列表的基本概念,包括列表定义、元素访问、修改、添加、删除方法,以及排序、组织和避免索引错误。通过实例演示了如何使用sort(), sorted(), reverse(), len()等函数来处理列表。
摘要由CSDN通过智能技术生成

《Python从入门到实践》读书笔记——第三章 列表简介

1 列表是什么

列表 由一系列按特定顺序你排列的元素组成,其中的元素之间可以没有任何关系.
列表中通常包含多个元素,因此给列表指定一个表示复数的名称(如letters,digits 或 names)是个不错的主意

在Python中, 用方括号([ ])表示裂变,并用逗号分隔其中的元素 .

bicycles = ['trek' , 'cannondale' , 'redline' , 'specialized']
print(bicycles)

如果让Python将列表打印出来,Pyhton将打印列表的内部表示, 包括方括号 :

['trek', 'cannondale', 'redline', 'specialized']

鉴于这不是你要让用户看到的输出,下面来学习如何访问列表元素

1.1 访问列表元素

要访问列表的任意元素,只需将 该元素的位置(索引) 告诉Python即可 , 要访问列表元素 , 可指出列表的名称, 再指出元素的索引, 并将后者放在方括号内

bicycles = ['trek' , 'cannondale' , 'redline' , 'specialized']
print(bicycles[0])

当你请求获取列表元素时, Python只返回该元素, 而不包括方括号:

trek

还可以对任意列表元素调用字符串方法,例如

bicycles = ['trek' , 'cannondale' , 'redline' , 'specialized']
print(bicycles[0].title())

#输出
Trek

1.2 索引从0而不是从1开始

要访问列表的任何元素, 都可将其位置减1, 并将结果作为索引, 例如要访问第四个列表元素, 可使用索引3.

Python为访问 最后一个列表元素 提供了一种特殊语法. 通过将索引指定为 -1 ,可让Python返回最后一个列表元素.

这种约定也适用于其他负数索引. 例如, 索引-2返回倒数第二个列表元素, 索引-3返回倒数第三个列表元素, 以此类推

1.3 使用列表中的各个值

你可以 像使用其他变量一样 使用列表中的各个值,例如:

bicycles = ['trek' , 'cannondale' , 'redline' , 'specialized']
message = f"My first bicycle was a {bicycles[0].title()}."

print(message)

#输出
My first bicycle was a Trek.

2 修改、添加和删除元素

你创建的大多数列表将是 动态 的, 这意味着列表创建后, 将随着程序的运行增删元素

2.1 修改列表元素

要修改列表元素,可指定列表名和要修改的元素的索引,在指定该元素的新值.

motocycles = ['hoda' , 'yamaha' , 'suzuki']
print(motocycles)

motocycles[0] = 'ducati'
print(motocycles)

你可以修改任意列表元素的值,而不仅仅是第一个元素的值

2.2 在列表中添加元素

2.2.1 在列表末尾添加元素

在列表中添加新元素时, 最简单的办法是将元素 附加(append) 到列表. 给列表 附加 元素时, 它将 添加到列表末尾 .

motocycles = ['hoda' , 'yamaha' , 'suzuki']
print(motocycles)

motocycles.append('ducati')
print(motocycles)

方法append()让动态将元素 ‘ducati’ 添加到列表末尾, 而补影响列表中的其他所有元素.

方法append()让动态地创建元素易如反掌. 例如, 你可以先创建一个空列表, 再使用一系列函数调用 append() 来添加元素.

motorcycles = []

motorcylces.append('honda')
motorcycles.append('yamaha')
motorcycles.append('suzuki')

print(motorcycles)

这种创建列表的方式极其常见, 因为经常要等程序运行后, 你才知道用户要在程序中存储哪些数据. 为控制用户, 可首先创建一个空列表, 用于存储用户将要输入的值, 然后将用户提供的每个新值附加到列表中.

2.2.2 在列表中插入元素

使用 方法insert()

motorcycles = ['honda' , 'yamaha' , 'suzuki']

motorcycles.insert(0,'ducati')
print(motorcycles)

#输出
['ducati', 'honda', 'yamaha', 'suzuki']

在这个示例中, 值 ‘ducati’ 被插入到了列表开头. 方法 insert() 在索引 0 添加空间, 并将值 ‘ducati’ 存储到这个地方. 这种操作将列表中既有的每个元素都右移一个位置

2.3 从列表中删除元素

2.3.1 使用del语句删除元素

 如果 知道要删除的元素在列表中的位置 , 可使用 del 语句
motorcycles = ['honda' , 'yamaha' , 'suzuki']
print(motorcycles)

del motorcycles[0]
print motorcylces

使用 del 可删除任意位置处的列表元素, 条件是知道其索引, 使用 del 语句将值从列表中删除后, 你就无法再访问它了

2.3.2 使用方法 pop() 删除元素

方法 pop() 删除列表末尾的元素,并让你能够接着使用它 . 术语 弹出(pop) 源自这样的类比: 列表就像一个栈, 而删除列表末尾的元素相当于弹出栈顶元素.

motorcycles = ['honda' , 'yamaha' , 'suzuki']
print(motorcycles)

popped_motorcycles = motorcycles.pop()
print(motorcycles)
print(popped_motorcycles)

#输出
['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki

输出表明, 列表末尾的值 ‘suzuki’ 已删除, 他现在被赋给了变量popped_motorcycles
最后打印出弹出的值,证明我们依然能够访问被删除的值

方法 pop() 有什么用处呢? 假设列表中的摩托车是按购买时间存储的,就可以使用方法 pop() 打印一条消息, 指出最后购买的是哪款摩托车:

motorcycles = ['honda' , 'yamaha' , 'suzuki']

last_owned = motorcycles.pop()
print(f'The last motorcycle I owned was a {last_owned.title()}.')

#输出是一个简单的句子,指出来最新购买的是哪款摩托车
The last motorcycle I owned was a Suzuki.

2.3.3 弹出列表中任何位置处的元素

可以使用 pop() 来删除列表中任意位置的元素,只需 在括号用指定要删除元素的索引 即可.

motorcycles = ['honda' , 'yamaha' , 'suzuki']

first_owned = motorcycles.pop(0)
print(f"The first motorcycle I owned was a {first_owned.title()}.")

#首先弹出列表中的第一款摩托车,然后打印一条有关这辆摩托车的消息.输出是一个简单的句子,描述了我购买的第一辆摩托车
The first motorcycle I owned was a Honda.

记住, 每当你使 pop() 时,被弹出的元素就不再在列表中了

如果你不确定该使用 del 语句还是 pop() 方法,下面是一个简单的判断标准: 如果你要从列表中删除一个元素,且不再已任何方式使用它,就使用 del 语句; 如果你要在删除元素后还能继续使用它, 就使用方法 pop()

2.3.4 根据值删除元素

如果不知道从列表中删除的值所处的位置, 只直到要删除的元素的值, 可以使用方法 remove()

motorcycles = ['honda' , 'yamaha' , 'suzuki','ducati']
print(motorcycles)

motorcycles.remove('ducati')
print(motorcycles)

#
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']

使用 remove() 删除代码时,也可接着使用它的值

motorcycles = ['honda' , 'yamaha' , 'suzuki','ducati']
print(motorcycles)

top_expensive = 'ducati'
motorcycles.remove(top_expensive)
print(motorcycles)
print(f"\nA {top_expensive.title()} is too expensive for me.")

#
['honda', 'yamaha', 'suzuki', 'ducati']
['honda', 'yamaha', 'suzuki']

A Ducati is too expensive for me.

注意: 方法 remove() 只删除第一个指定的值,如要删除的值可能在列表中出现多次,就需要使用循环来确保将每个值都删除.

3 组织列表

3.1 使用方法 sort() 对列表永久排序

Pyhton方法 sort() 让你能够较为轻松地对列表进行排序. 假设你有一个汽车列表, 并要让其中的汽车按字母顺序排列. 为简化这项任务, 假设该列表中的所有值都是小写的.

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()
print(cars)

#
['audi', 'bmw', 'subaru', 'toyota']

方法 sort() 永久地 修改列表元素的排列顺序. 现在, 汽车是按字母顺序排列的, 再也无法恢复到原来的排列顺序.

还可以 按与字母顺序相反的顺序排列列表元素 ,只需向 sort() 方法传递参数 reverse = True 即可

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort(reverse=True)
print(cars)

#
['toyota', 'subaru', 'bmw', 'audi']

3.2 使用函数 sorted() 对列表临时排序

函数 sorted() 让你能够按特定顺序显示列表元素, 同时不影响它们在列表中的原始排列顺序.

cars = ['bmw', 'audi', 'toyota', 'subaru']

print("Here is the original list:")
print(cars)

print("\nHere is the sorted list:")
print(sorted(cars))

print("\nHere is the original list again:")
print(cars)

#
Here is the original list:
['bmw', 'audi', 'toyota', 'subaru']

Here is the sorted list:
['audi', 'bmw', 'subaru', 'toyota']

Here is the original list again:
['bmw', 'audi', 'toyota', 'subaru']

调用函数 sorted() 后, 列表元素的排列顺序并没有变. 如果要按与字母顺序相反的顺序显示列表, 也可向函数 sorted() 传递参数 reverse=True
print``(``sorted``(cars``,``reverse``=``True``))

注意: 在并非所有的值都是小写时, 按字母顺序排列列表要复杂些. 决定排列顺序时 有多种解读大写字母的方法, 要指定准确的排列顺序, 可能比我们这里所做的要复杂. 然而, 大多数排列方式是以本节介绍的知识为基础的.

3.3 倒着打印列表

要 反转列表元素的排列顺序 ,可使用方法 reverse()

cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)

cars.reverse()
print(cars)

#
['bmw', 'audi', 'toyota', 'subaru']
['subaru', 'toyota', 'audi', 'bmw']

3.4 确定列表的长度

使用函数 len() 可快速 获取列表的长度 .

>>> cars = ['bmw' ,'audi; ,'toyota' ,'subaru']
>>> len(cars)
4

Python计算列表元素数时从1开始, 因此确定列表长度时, 你应该不会遇到差一错误.

4 使用列表时避免索引错误

  • 每当需要访问最后一个列表元素时, 都可以使用索引-1
    • 仅当列表为空时, 这种访问最后一个元素的方式才会导致错误

发生索引错误却找不到解决办法时, 请尝试将列表或其长度打印出来. 列表可能与你以为的截然不同, 在程序对其进行了动态处理时尤其如此. 通过查看列表或其包含的元素数, 可帮助你找出这种逻辑错误

5 小结

  • 修改列表元素
    • motocycles[0] = 'ducati'
  • 将值添加到列表末尾
    • motorcylces.append('honda')
  • 在列表中插入元素
    • motorcycles.insert(0,'ducati')
  • 在列表中删除元素
    • del motorcycles[0]
    • popped_motorcycles = motorcycles.pop()
    • first_owned = motorcycles.pop(0)
    • motorcycles.remove('ducati')
  • 组织列表
    • 永久排序
      • cars.sort()
        • 按与字母顺序相反的顺序排序
          • cars.sort(reverse=True)
    • 临时排序
      • print(sorted(cars))
        • 如果要按与字母顺序相反的顺序显示列表, 也可向函数 sorted() 传递参数 reverse=True
    • 倒着打印列表
      • cars.reverse()
      • print(cars)
    • 确定列表的长度
      • len(cars)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值