likes
comments
collection
share

Python入门: (2)列表和元组1. 列表是什么 2. 访问列表元素 列表是有序集合,因此要访问列表的任意元素,

作者站长头像
站长
· 阅读数 55

列表

1. 列表是什么

  • 列表 由一系列按特定顺序排列的元素组成
  • 你可以将没有任何关系的任何东西加入列表中
  • 通常给列表指定一个表示复数的名称(如letters、digits、names)
  • 在Python中,用方括号[ ]表示列表,并用,分隔其中的元素
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles)  # Python将打印列表的内部表示,包括方括号

2. 访问列表元素

  • 列表是有序集合,因此要访问列表的任意元素,只需将该元素的位置(索引)告诉Python。格式:列表名称[索引]
  • 索引从0开始而不是1,注意避免索引错误
bicycles = ['trek', 'cannondale', 'redline', 'specialized']
print(bicycles[0])  # 当你请求获取列表元素时,Python只返回该元素,不包括方括号
print(bicycles[2].title())  # 你可以对任意列表元素调用字符串方法
print(bicycles[-1].upper())  # 通过将索引指定为-1, 可返回最后一个列表元素,以此类推

Python入门:   (2)列表和元组1. 列表是什么 2. 访问列表元素 列表是有序集合,因此要访问列表的任意元素,

3. 修改、添加和删除元素

修改列表元素

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

motorcycles[0] = 'ducati'  # 修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值
print(motorcycles)

在列表中添加元素

  • 在列表中添加新元素最简单的方式是 附加 到列表

append v. 附加,增补

motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.append('ducati')  # 方法append()将元素'ducati'添加到列表末尾
print(motorcycles)
  • 为控制用户,可首先创建一个空列表,用于存储用户输入,然后将用户提供的每个新值附加到列表中
motorcycles = []
motorcycles.append('honda')
motorcycles.append('yamaha')
motorcycles.append('suzuki')

print(motorcycles)

在列表中插入元素

  • 使用方法insert()可在列表的任何位置添加新元素,需要指定新元素的索引和值
motorcycles = ['honda', 'yamaha', 'suzuki']

motorcycles.insert(0, 'ducati')  # 方法insert()在索引0处添加空间,并将值'ducati'存储到这个地方
print(motorcycles)

从列表中删除元素

使用del语句删除元素

  • 如果知道要删除的元素的索引,可使用del语句。格式: del 列表名[索引]
motorcycles = ['honda', 'yamaha', 'suzuki']
del motorcycles[1]
print(motorcycles)

使用方法pop()删除元素

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

pop v. 突然出现,速去

motorcycles = ['honda', 'yamaha', 'suzuki']
popped_motorcycle = motorcycles.pop()  # 弹出列表末尾元素,并将其值赋给变量popped_motorcycle
print(motorcycles)
print(popped_motorcycle)

Python入门:   (2)列表和元组1. 列表是什么 2. 访问列表元素 列表是有序集合,因此要访问列表的任意元素,

  • 实际上,可以使用pop()来删除列表中任意位置的元素,只需在圆括号中指定要删除元素的索引即可
first_owned = motorcycles.pop(0)
print(f"The first motorcycle I owned was a {first_owned.title()}.")

pop() or del ?

  • 如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用del语句
  • 如果你要在删除元素后还能继续使用它,就使用方法pop()

使用方法remove()根据值删除元素

  • 如果不知道要从列表中删除元素的位置,只知道该元素的值,可使用方法remove()
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
motorcycles.remove('ducati')  # 方法remove()删除值为'ducati'的元素
print(motorcycles)
  • 使用方法remove()从列表中删除元素时,也可继续使用它的值
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
too_expensive = 'ducati'
motorcycles.remove(too_expensive)  # 方法remove()删除值为'ducati'的元素
print(motorcycles)
print(f"\nA {too_expensive.title()} is too expensive for me")
  • 方法remove()只删除第一个指定的值,如果要删除的值出现多次,就需要使用循环来确保将每个值都删除

4. 组织列表

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

cars1 = ['bmw', 'audi', 'toyota', 'subaru']
cars2 = ['bmw', 'audi', 'toyota', 'subaru']
cars1.sort()  # 方法sort()永久性地修改列表元素的排列顺序,对字符串默认按字母顺序排列
cars2.sort(reverse=True)  # 向sort()方法传递参数reverse=True,可按与字母顺序相反的顺序排列列表元素
print(cars1)
print(cars2)

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

  • 要保留列表原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted()
cars = ['bmw', 'audi', 'toyota', 'subaru']
print("Here is the original list:")
print(cars)

print("\nHere is the sorted list:")
print(sorted(cars, reverse=True))

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

倒着打印列表

  • 方法reverse()反转列表元素的排列顺序,与字母顺序无关
  • 方法reverse()永久地修改列表元素的排列顺序。恢复顺序需要再次调用reverse()
cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.reverse()  # 方法reverse()反转列表元素的排列顺序
print(cars)

确定列表的长度

  • 使用函数len()可快速获悉列表的长度
  • Python计算列表元素数时从1开始
cars = ['bmw', 'audi', 'toyota', 'subaru']
print(len(cars))

5. 遍历整个列表

  • 使用 for循环 可以避免大量的重复代码
  • 在for循环中可对每个元素执行任何操作
  • 选择单个列表元素的有意义的名称大有裨益,例如 for item * in list_of_items:
  • Python根据缩进来判断代码行与前一个代码行的关系,要注意避免缩进错误
magicians = ['alice', 'david', 'carolina']
for magician in magicians:  # 定义for循环
    print(f"{magician.title()}, that was a great trick!")

print("Thank you, everyone.")  # 在for循环后面,没有缩进的代码都只执行一次

6. 创建数值列表

使用函数range()

  • 函数range()让Python从指定的第一个值开始数,并在到达指定的第二个值时停止
for value in range(1, 5):  # range()指定一个参数时,将从0开始
    print(value)  # 注意差一行为

Python入门:   (2)列表和元组1. 列表是什么 2. 访问列表元素 列表是有序集合,因此要访问列表的任意元素,

使用range()创建数字列表

  • 使用函数list()range()的结果直接转换为列表
numbers = list(range(1, 6))  # 将range()作为list()的参数,输出将是一个数字列表
print(numbers)
  • 使用函数range()时,还可通过指定第三个参数来指定步长
even_numbers = list(range(2, 11, 2))  # range()从2开始数,不断加2,直到达到或超过终值
print(even_numbers)

对数字列表执行简单的统计计算

digits = [1, 2, 3, 4, 5, 6, 7, 8, 9, 0]
print(min(digits))  # 函数min()返回数字列表的最小值
print(max(digits))  # 函数max()返回数字列表的最大值
print(sum(digits))  # 函数sum()返回数字列表的总和

列表解析

  • 列表解析将for循环和创建列新元素的代码合并成一行,并自动附加新元素
  • 格式: 列表名 = [操作表达式 for item in list_of_items]
  • 注意这里的for语句末尾没有冒号
squares = [value**2 for value in range(1, 11)]  # 将1~10提供给表达式value**2
print(squares)

7. 使用列表的一部分

切片

  • 要创建切片,可指定要使用的第一个元素和最后一个元素的索引
  • 与函数range()一样,Python在到达第二个索引之前的元素后停止
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[0:3])  # 输出第1,2,3个球员的名字
print(players[:4])  # 如果没有指定第一个索引,将自动从列表开头开始
print(players[-3:])  # 如果没有指定第二个索引,将自动到列表末尾结束

遍历切片

  • 如果要遍历列表的部分元素,可在for循环中使用切片
players = ['charles', 'martina', 'michael', 'florence', 'eli']

print("Here are the first three players: ")
for player in players[:3]:
    print(player.title())

复制列表

  • 首先创建一个包含整个列表的切片,即列表的副本。再进行赋值
my_foods = ['pizza', 'falafel', 'carrot cake']
friend_foods = my_foods[:]
print(friend_foods)
  • 若不使用切片直接赋值: list_A = list_B 实际上是将新变量list_A关联到已与list_B相关联的列表。因此这两个变量指向同一个列表,当对其中一个列表进行操作时,另一个也发生改变

元组

  • Python将不能修改的值称为 不可变的,不可变的列表称为元组
  • 相比于列表,元组是更简单的数据结构。如果需要存储的一组值在程序的整个生命周期内都不变,就可以使用元组
dimensions = (200, 50)  # 使用圆括号来标识元组
dimensions = (240, 60)  # 给元组变量重新赋值是合法的,改变单个元组元素的值是非法的

文章中的所有代码经测试均可成功编译运行,可直接复制。具有显然结果或简单结论的代码不展示运行结果。如有问题欢迎随时交流~

转载自:https://juejin.cn/post/6903566815868223501
评论
请登录