Python-列表

本文介绍了Python中列表的基本概念,包括创建、元素访问、增删操作、排序、切片以及元组的使用。涵盖了列表解析、范围函数、复制列表等内容,帮助读者掌握列表和元组的灵活运用。
摘要由CSDN通过智能技术生成

列表


由一系列按特定顺序排列的元素组成。你可以创建包含字母表中所有字母、数字 0~9 或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有 任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters digits names )是个不错的主意。
用方括号([] )来表示列表,并用逗号来分隔其中的元素。

1.访问列表元素

要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。
示例: 下面的代码从列表 bicycles 中提取第一款自行车:
bicycles = ['trek', 'cannondale', 'redline', 'specialized'] 
print(bicycles[0])

注:索引从0而不是1开始


2.在列表中添加元素

2.1在列表末尾添加元素

方法 append() 将元素添加到了列表末尾

2.2在列表中插入元素

使用方法 insert() 可在列表的任何位置添加新元素。为此,你需要指定新元素的索引和值。
示例:
motorcycles = ['honda', 'yamaha', 'suzuki']
motorcycles.insert(0, 'ducati')
print(motorcycles)

2.3从列表中删除元素

(1)使用del语句删除元素

如果知道要删除的元素在列表中的位置,可使用 del 语句。
示例:使用 del 删除了列表 motorcycles 中的第一个元素 —— 'honda'
motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
del motorcycles[0]
print(motorcycles)

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

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

示例:从列表motorcycles 中弹出一款摩托车。

motorcycles = ['honda', 'yamaha', 'suzuki']
print(motorcycles)
popped_motorcycle = motorcycles.pop() 
print(motorcycles)
print(popped_motorcycle)
我们首先定义并打印了列表 motorcycles 。接下来,我们从这个列表中弹出一个值,并将其存储到变量 popped_motorcycle 。然后我们打印这个列表,以核实从其中删除了一个值。最后,我们打印弹出的值,以证明我们依然能够访问被删除的值

上述代码输出结果:

['honda', 'yamaha', 'suzuki']
['honda', 'yamaha']
suzuki

注:实际上,你可以使用pop() 来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。

(3)根据值删除元素

当你不知道要从列表中删除的值所处的位置。如果你只知道要删除的元素的值,可使用方法 remove()
motorcycles = ['honda', 'yamaha', 'suzuki', 'ducati']
print(motorcycles)
motorcycles.remove('ducati')
print(motorcycles)

注:使用remove() 从列表中删除元素时,也可接着使用它的值,只要将它的值在使用remove()方法前存在变量里就可以在删除后继续使用;方法remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。


3.组织列表

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

使用此方法可以将列表按字母顺序进行永久性排序,还可以向sort()传递参数reverse=True ,将列表按与字母顺序相反的顺序排列。

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

要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted() 。如果你要按与字母顺序相反的顺序显示列表,也可向函数 sorted() 传递参数 reverse=True

注:在并非所有的值都是小写时,按字母顺序排列列表要复杂些。

3.3倒着打印列表

要反转列表元素的排列顺序,可使用方法 reverse()
方法 reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用 reverse() 即可。

3.4确定列表长度

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

4.操作列表

4.1遍历整个列表

使用for循环遍历列表

magicians = ['alice', 'david', 'carolina'] 
for magician in magicians: 
    print(magician)

这些命名约定有助于你明白for 循环中将对每个元素执行的操作。

for cat in cats:
for dog in dogs:
for item in list_of_items:

注:不要遗漏了for循环后面的冒号,因为for 语句末尾的冒号告诉Python,下一行是循环的第一行。换行符为"\n"

4.2创建数值列表

(1)Python 函数 range() 让你能够轻松地生成一系列的数字。例如,可以像下面这样使用函数 range() 来打印一系列的数字:
for value in range(1,5):
    print(value)
1
2
3
4

在这个示例中,range() 只是打印数字1~4,这是你在编程语言中经常看到的差一行为的结果。函数range() Python从你指定的第一个值开始数,并在到达你指定的第二个值 后停止,因此输出不包含第二个值(这里为5)。

(2)要创建数字列表,可使用函数 list() range() 的结果直接转换为列表。
numbers = list(range(1,6))
print(numbers)
[1, 2, 3, 4, 5]
有几个专门用于处理数字列表的 Python函数。例如:min(),max(),sum()。

4.3列表解析

for 循环和创建新元素的代码合并成一行,并自动附加新元素。

原代码:

squares = []
for value in range(1,11): 
    squares.append(value**2)
print(squares)

解析后的代码:

squares = [value**2 for value in range(1,11)]
print(squares)
结果均为:
[1, 4, 9, 16, 25, 36, 49, 64, 81, 100]

要使用这种语法,首先指定一个描述性的列表名,如squares ;然后,指定一个左方括号,并定义一个表达式,用于生成你要存储到列表中的值。在这个示例中,表达式 为value**2 ,它计算平方值。接下来,编写一个for 循环,用于给表达式提供值,再加上右方括号。在这个示例中,for 循环为for value in range(1,11) ,它将值 1~10提供给表达式value**2 。请注意,这里的for 语句末尾没有冒号。

4.4使用列表的一部分(切片)

(1)切片

要创建切片,可指定要使用的第一个元素和最后一个元素的索引。与函数 range() 一样, Python 在到达你指定的第二个索引前面的元素后停止。要输出列表中的前三个元素,需
要指定索引 0~3 ,这将输出分别为 0 1 2 的元素。
下面的示例处理的是一个运动队成员列表:
players = ['charles', 'martina', 'michael', 'florence', 'eli'] 
print(players[0:3])

结果是:

['charles', 'martina', 'michael']
如果你没有指定第一个索引, Python 将自动从列表开头开始:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[:4])
['charles', 'martina', 'michael', 'florence']

同理,要让切片终止于列表末尾,也可使用类似的语法,即省略终止索引。

players = ['charles', 'martina', 'michael', 'florence', 'eli']
print(players[2:])
['michael', 'florence', 'eli']

(2)遍历切片

如果要遍历列表的部分元素,可在 for 循环中使用切片。在下面的示例中,我们遍历前三名队员,并打印他们的名字:
players = ['charles', 'martina', 'michael', 'florence', 'eli']
print("Here are the first three players on my team:") 
for player in players[:3]:
    print(player.title())
Here are the first three players on my team:
Charles
Martina
Michael

(3)复制列表

要复制列表,可创建一个包含整个列表的切片,方法是同时省略起始索引和终止索引( [:] )。这让 Python 创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表。
my_foods = ['pizza', 'falafel', 'carrot cake'] 
friend_foods = my_foods[:]

注:倘若我们只是简单地将my_foods 赋给friend_foods ,就不能得到两个列表。例如,下例演示了在不使用切片的情况下复制列表的情况:

my_foods = ['pizza', 'falafel', 'carrot cake']
#这行不通
❶ friend_foods = my_foods
my_foods.append('cannoli')
friend_foods.append('ice cream')
print("My favorite foods are:")
print(my_foods)
print("\nMy friend's favorite foods are:")
print(friend_foods)
这里将 my_foods 赋给 friend_foods ,而不是将 my_foods 的副本存储到 friend_foods (见 )。这种语法实际上是让 Python 将新变量 friend_foods 关联到包含 在my_foods 中的列表,因此这两个变量都指向同一个列表。鉴于此,当我们将 'cannoli' 添加到 my_foods 中时,它也将出现 friend_foods 中;同样,虽然 'ice cream' 好像只被加入到了 friend_foods 中,但它也将出现在这两个列表中。
输出表明,两个列表是相同的,这并非我们想要的结果:
My favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']
My friend's favorite foods are:
['pizza', 'falafel', 'carrot cake', 'cannoli', 'ice cream']

4.5元组

有时候你需要创建一系列不可修改的元素,元组可以满足这种需求。Python 将不能修改的值称为
不可变的 ,而不可变的列表被称为元组 。

(1)定义元组

❶ dimensions = (200, 50)
❷ print(dimensions[0])
print(dimensions[1])
我们首先定义了元组 dimensions (见 ),为此我们使用了圆括号而不是方括号。接下来,我们分别打印该元组的各个元素,使用的语法与访问列表元素时使用的语法相同(见❷ ):
200
50

注:元组不可修改,即dimensions[0] = 250 写法是错误的。

(2)遍历元组中的所有值

像列表一样,也可以使用 for 循环来遍历元组中的所有值:
dimensions = (200, 50)
for dimension in dimensions:
    print(dimension)

(3)修改元组变量

虽然不能修改元组的元素,但可以给存储元组的变量赋值。因此,如果要修改前述矩形的尺寸,可重新定义整个元组:
❶ dimensions = (200, 50)
print("Original dimensions:")
for dimension in dimensions:
    print(dimension)
❷ dimensions = (400, 100) 
❸ print("\nModified dimensions:")
for dimension in dimensions:
    print(dimension)
我们首先定义了一个元组,并将其存储的尺寸打印了出来(见 );接下来,将一个新元组存储到变量 dimensions 中(见 );然后,打印新的尺寸(见 )。这次, Python 不会报告任何错误,因为给元组变量赋值是合法的:
Original dimensions:
200
50
Modified dimensions:
400
100
  • 30
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值