Python编程(从入门到实践)第三章 列表简介 (一)

第三章:列表简介

列表是让你能够在一个地方存储成组的信息,其中可以只包含几个元素,也可以包含数百万个元素。

3.1 列表是什么?—— 有序集合

  • 列表是由一系列按特定顺序排列的元素组成
  • 我们可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;
  • 也可以将任何东西加入列表中,其中的元素之间可以没有任何关系

列表通常包含多个元素

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

Python的print函数将打印列表的内部表示,包括方括号。

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

3.1.1 访问列表元素

列表是有序集合。列表中任意元素的访问方法:只需要将该元素的位置(索引)告诉Python即可。

具体做法:

要访问列表元素,可指出列表的名称,再指出元素的索引,并将后置放在方括号内。

bicycles = ['trek','cannondale','redline','specialized']
print(bicycles[0])
# 字符串方法
print(bicycles[0].title())

trek

Trek首字母大写

3.1.2 索引从0而不是1开始

在Python中,第一个列表元素的索引为0,而不是1

根据这种简单的计数方式,要访问列表中的任何元素,都可以将其位置减1,并将结果作为索引。

# 返回列表中的第二个和第四个元素:
print(bicycles[1])
print(bicycles[3])

cannondale

specialized

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

# 通过负值索引访问列表元素
print(bicycles[-1])

specialized

负数索引:逆序访问

索引 -1 :最后一个列表元素

索引 -2:倒数第二个列表元素

索引 -3:倒数第三个列表元素

使用负数索引的好处:实现列表长度未知情况下访问列表尾部元素

我们经常需要在不知道列表长度的情况下访问最后的元素。

3.1.3 使用列表中的各个值

列表中值的使用等同于使用其他变量。

例如,可以使用 f字符串 根据列表中的值来创建消息。

bicycles = ['trek','cannondale','redline','specialized']
# 使用bicycles[0]的值生成了一个句子,并将其赋值给变量message。
message = f"My first bicycle was a {bicycles[0].title()}."

print(message)

My first bicycle was a Trek.

3.2 修改、添加和删除元素

列表:静态 & 动态(更多),动态列表需要在列表创建后随着程序的运行增删元素。

3.2.1 修改列表元素

  • 修改列表元素和访问列表元素方法类似
  • 如果需要修改列表元素,可以指定列表名和要修改的元素的索引,再指定该元素的新值。
// motorcycles.py
motorcycles = ['honda','yamha','suzuki']
print(motorcycles)

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

['honda','yamha','suzuki']

['ducati','yamha','suzuli']

输出表明:第一个元素的值确实编了,但是其他列表元素的值没变。

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

3.2.2 在列表中添加元素

Python提供了多种在既有列表中添加新数据的方式:

1. 在列表末尾添加元素

使用append函数将元素附加到列表末尾

motorcycles = ['honda','yamha','suzuki']
print(bicycles)

motorcycles.append('ducati')
print(motorcycles)

['honda','yamha','suzuki']

['honda','yamha','suzuki','duzati]

使用append函数可以实现动态地创建列表。

首先,可以先创建一个空列表,再使用一系列函数调用append()来添加元素。

motorcycles = []

motorcycles.append('honda')
motorcycles.append('yamha')
motorcycles.append('suzuki')

print(motorcycles)

['honda','yamha','suzuki']

注:

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

使用 insert函数可以在列表的任意位置添加新元素。

我们需要指定新元素的索引和值。

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

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

['ducati','honda','yamha','suzuki']

这里的 insert函数实现了将列表新值'ducati' 插入到了列表开头。具体来说,insert 操作在索引 0 处添加空间,并将值 'ducati' 存储在这个位置,insert操作将列表中既有的每个元素都右移一个位置。

3.2.3 从列表中删除元素

Python可以根据位置或值来删除列表中的元素。

1. 使用 del 语句删除元素

如果知道要删除的元素在列表中的位置,可以使用del语句实现删除操作。

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

# 使用del删除列表中的第一个元素
del motorcylces[0]
print(motorcycles)

['honda','yamha','suzuki']

['yamha','suzuki']

使用 del 可以删除任意位置处的列表元素,条件是知道其索引。

del motorcycles[1]

使用 del 语句将值从列表中删除后,就无法再次访问了

2. 使用 pop() 方法删除元素

pop() 方法删除列表末尾的元素,并让你能够接着使用它。

pop弹栈:列表就像一个栈,删除列表末尾的元素相当于弹出栈顶元素。

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

popped_motorcycle = motorcycles.pop()
print(motorcycles)
print(poped_motorcycle)
  • 首先,定义并打印列表 motorcycles;

  • 接下来,从这个列表中弹出一个值,并将其赋值给变量popped_motorcycle中;

  • 然后打印这个列表,以核实从中删除了一个值;

  • 最后,打印弹出的值,来证明我们依然能够访问被删除的值。

['honda','yamha','suzuki']

['honda','yamha']

suzuki

例:假设列表中摩托车是按照时间顺序存储的

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

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

输出是打印一条消息,指出最后购买的是哪款摩托车:

The last motorcycle I owned was a Suzuku.

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

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

别忘了,每当使用 pop() 时,被弹出元素就不再在列表中了。

  • 判断该使用 del语句还是 pop() 方法的标准是:
    • 如果你要从列表中删除一个元素,且不再以任何方式使用它,就使用 del 语句;
    • 如果你要在删除元素后还继续使用它,就使用方法 pop() 。
4. 根据值删除元素

在只知道要删除元素的值,而不知道要从列表中删除的值所处得位置时,可使用 remove() 方法

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

使用 remove() 方法从列表中删除元素时,也可以接着使用它的值。

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

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

['honda','yamha','suzuki','ducati']

['honda','yamha','suzuki']

A Duzuki is too expensive for me.

可以看到,值 'ducati' 已经从列表中删除,但是可以通过变量 too_expensive 来访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值