Python列表学习

一、列表简单操作

1、列表简介
列表由一系列按特定顺序排列的元素组成;
我们可以创建包含字母表中所有字母、数字0~9或所有家庭成员姓名的列表;也可以将任何东西加入列表中,其中的元素之间可以没有任何关系。鉴于列表通常包含多个元素,给列表指定一个表示复数的名称(如letters 、digits 或names )是个good idea。
在Python中,一般使用方括号([ ] )来表示列表,并用逗号来分隔其中的元素;下面是一个简单的列表实例,这个列表包含了学校内的一部分学生。

students=["小红","小明","小华","小鑫","lucy"]
print(students)

在这里插入图片描述
如果我们让Python将列表打印出来,Python将打印列表的内部表示,直接打印是包括其中的方括号的;这其实并不是我们用户需要使用的数据,因此下面我们来学习怎么访问列表内部元素,得到我们用户需要使用的数据。
2、访问列表元素
列表是有序集合,因此要访问列表的任何元素,只需将该元素的位置或索引告诉Python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内;但是注意索引是从0开始的,并非从1开始;事实上在大多数编程语言中都是如此,这与列表操作的底层实现相关。

students=["小红","小明","小华","小鑫","lucy"]
print(students[2])

在这里插入图片描述
对于英文来说,我们需要在使用过程中区分开头字母大小写的话,可使用方法title() 让元素’trek’ 的格式更整洁,更符合我们的生活实际。

students=["小红","小明","小华","小鑫","lucy"]
print(students[4].title())

在这里插入图片描述
3、特殊法访问元素
Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1 ,可让Python返回最后一个列表元素,这种语法很有用,因为我们经常需要在不知道列表长度的情况下访问最后的元素。这种约定也适用于其他负数索引,例如,索引-2 返回倒数第二个列表元素,索引-3 返回倒数第三个列表元素,以此类推。

students=["小红","小明","小华","小鑫","lucy"]
print(students[-1])
print(students[-3])
print(students[-5])

在这里插入图片描述
4、使用列表中的值
我们可像使用其他变量一样使用列表中的各个值。例如,我们可以使用拼接根据列表中的值来创建消息。

students=["小红","小明","小华","小鑫","lucy"]
print("我的好朋友是"+students[2]+".")

我们可以使用list元素和其他内容,自行组合成我们自己需要的内容。
在这里插入图片描述

二、列表修改/添加/删减元素

2.1修改列表元素
我们创建的大多数列表都是动态的,这意味着列表创建后,将随着程序的运行增删元素;修改列表元素的语法与访问列表元素的语法类似;要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。

students=["小红","小明","小华","小鑫","lucy"]
print("原列表",students)
students[1]="小丽"
print("新列表",students) print(students)

通过列表索引值,重新输入列表元素,覆盖原列表相同索引值处的元素,可以实现对列表进行修改操作。
在这里插入图片描述
2.2列表中添加元素
我们可能出于众多原因要在列表中添加新元素,例如,我们可能希望游戏中出现新的外星人、添加可视化数据或给网站添加新注册的用户。Python提供了多种在既有列表中添加新数据的方式,主要有以下两种:
2.2.1 在列表末尾添加
在列表中添加新元素时,最简单的方式是将元素附加到列表末尾。给列表附加元素时,它将添加到列表末尾。具体方法是使用append() 将元素’添加到了列表末尾,并不影响列表中的其他所有元素。

students=["小红","小明","小华","小鑫","lucy"]
print("原列表:",students)
students.append("Bob")
print("新列表:",students)

在这里插入图片描述
2.2.2 在列表中插入元素
使用方法insert() 可在列表的任何位置添加新元素。为此,我们需要指定新元素的索引和值。

students=["小红","小明","小华","小鑫","lucy"]
print("原列表:",students)
students.insert(1,"Bob")
print("新列表:",students)

在这里插入图片描述
如上图所示,在索引值为1的位置,添加上了我们键入的元素“Bob”,达到了在列表中任意位置添加元素的操作,如果索引值超出了原始列表的最大索引值,则自动在该列表末尾添加我们键入的元素值。

students=["小红","小明","小华","小鑫","lucy"]
print("原列表:",students)
# students.insert(1,"Bob")
students.insert(10,"Bob")
print("新列表:",students)

在这里插入图片描述
2.3 从列表中删除元素
我们经常需要从列表中删除一个或多个元素。例如,玩家将空中的一个外星人射杀后,我们很可能要将其从存活的外星人列表中删除;当用户在我们创建的Web应用中注销其账户时,我们需要将该用户从活跃用户列表中删除。我们可以根据位置或值来删除列表中的元素。
2.3.1 使用del命令删除
如果知道要删除的元素在列表中的位置,可使用del 语句。

students=["小红","小明","小华","小鑫","lucy"]
print("原列表:",students)
del students[0]# 删除索引值为0的列表元素“小红”
print("新列表:",students)

在这里插入图片描述
对比新列表和原始列表我们会发现使用del 语句将值从列表中删除后,我们就无法再访问它了。
2.3.2使用方法 pop() 删除元素
有时候,我们要将元素从列表中删除,并接着使用它的值。例如,我们可能需要获取刚被射杀的外星人的 x 和 y 坐标,以便在相应的位置显示爆炸效果;在Web应用程序中,你可能要将用户从活跃成员列表中删除,并将其加入到非活跃成员列表中。
方法pop() 可删除列表末尾的元素,并让我们能够接着使用它。

students=["小红","小明","小华","小鑫","lucy"]
print("原列表:",students)
poped_student=students.pop()# 删除索引值为0的列表元素“小红”
print("新列表:",students)
print("删除的列表元素:",poped_student)

在这里插入图片描述
列表末尾的值“lucy”已删除,它现在存储在变量popped_student 中,我们可以直接使用该变量popped_student 去使用我们已经删除的元素。
实际上,我们也可以使用pop() 来删除列表中任何位置的元素,只需在括号中指定要删除的元素的索引即可。

students=["小红","小明","小华","小鑫","lucy"]
print("原列表:",students)
poped_student=students.pop()# 删除索引值为0的列表元素“小红”
print("新列表:",students)
print("删除的列表元素:",poped_student)
poped_student1=students.pop(2)
print("第二次删除的列表元素:",poped_student1)
poped_student2=students.pop(0)
print("第三次删除的列表元素:",poped_student2)
print("列表内剩余元素:",students)

在这里插入图片描述
如果我们不确定该使用del 语句还是pop() 方法,下面是一个简单的判断标准:如果我们要从列表中删除一个元素,且不再以任何方式使用它,就使用del 语句;如果我们要在删除元素后还能继续使用它,就使用方法pop() 。
2.3.3 根据值删除元素
有时候,我们不知道要从列表中删除的值所处的位置。但是如果我们只知道要删除的元素的值,也可使用方法remove() 达到我们想要的目的,而且使用remove() 从列表中删除元素时,也可接着使用它的值,但是方法remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。

students=["小红","小明","小华","小鑫","lucy"]
print("原列表:",students)
want_del="小红"  # 欲删除索引值为0的列表元素“小红”
remove_student=students.remove(want_del)  
print("新列表:",students)

在这里插入图片描述

students=["小红","小明","小华","小鑫","lucy","小红"]
print("原列表:",students)
want_del="小红"  # 欲删除索引值为0的列表元素“小红”
remove_student=students.remove(want_del)
print("新列表:",students)

在这里插入图片描述
对比两次运行结果可以看出来,使用remove()之后,只是把第一个“小红”删除了,列表末尾的“小红”仍然还在列表中,所以在使用remove时,往往都需要配合循环使用,才能保证把列表中的所用相同元素删除干净。

students=["小红","小明","小华","小鑫","lucy","小红"]
print("原列表:",students)
want_del="小红"  # 欲删除索引值为0的列表元素“小红”
for i in students:
    if i==want_del:
      remove_student=students.remove(want_del)
print("新列表:",students)

在这里插入图片描述
经过for循环遍历整个列表之后,我们就可以将列表内的所有相同项全部删除。
2.4 列表元素排序
2.4.1使用方法 使 sort() 对列表进行永久性排序
Python方法sort() 让你能够较为轻松地对列表进行排序。假设你有一个汽车列表,并要让其中的汽车按字母顺序排列。为简化这项任务,我们假设该列表中的所有值都是小写
的。

cars = ['bmw', 'audi', 'toyota', 'subaru']
cars.sort()  #默认就是按照首字母在26字母表中的的顺序排列的
print(cars)

在这里插入图片描述
如上图,执行程序后,汽车是按字母顺序排列的,sort() 是永久性地修改了列表元素的排列顺序,并且再也无法恢复到原来的排列顺序。
2.4.2 使用函数 使 sorted() 对列表进行临时排序
要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数sorted() 。函数sorted() 让我们能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排
列顺序。

cars = ['bmw', 'audi', 'toyota', 'subaru']
print("原列表顺序:")
print(cars)
print("sorted()排序后的列表顺序:")
print(sorted(cars))
print("执行完成之后打印原列表顺序(观察原列表顺序是否改变):")
print(cars)

在这里插入图片描述
程序执行结束,我们发现,只是在调用sorted()函数之后,列表顺序临时改变了,或者说是生成了一个临时的列表,我们可以另外定义一个变量去储存他,也可以直接调用,但是不管怎么样,都不影响原来列表的顺序。
2.4.3 倒着打印列表
要反转列表元素的排列顺序,可使用方法reverse() 。

cars = ['bmw', 'audi', 'toyota', 'subaru']
print(cars)
cars.reverse() #调用reverse()函数
print(cars)

在这里插入图片描述
注意,reverse() 不是指按与字母顺序相反的顺序排列列表元素,而只是反转列表元素的排列顺序;方法reverse() 永久性地修改列表元素的排列顺序,但可随时恢复到原来的排列顺序,为此只需对列表再次调用reverse() 即可。

cars = ['bmw', 'audi', 'toyota', 'subaru']
print("原列表:",cars)
cars.reverse() #调用reverse()函数
print("第一次调用函数之后的列表:",cars)
cars.reverse() #再一次调用reverse()函数
print("第二次调用函数之后的列表:",cars) #在调用一次,可随时恢复到原来的排列顺序

在这里插入图片描述
2.5 确定列表的长度
使用函数len() 可快速获悉列表的长度。在下面的示例中,列表包含4个元素,因此其长度为4

cars = ['bmw', 'audi', 'toyota', 'subaru']
print("求列表的长度:",len(cars))

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

小懵牛

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

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

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

打赏作者

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

抵扣说明:

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

余额充值