python基础知识-列表

1 列表是什么

列表 是由一系列按特定顺序排列的元素组成。可以包含字符,数字和字符串,各元素之间没有任何关系。一般情况,会给用于指向列表的变量命名为复数形式,如names。在python中,使用[]来表示列表,见一个简单的示例:

names = ["zhan san","li si","wang er","ma zi"]#定义一个列表
print(names)

打印出来的结果为:

['zhan san', 'li si', 'wang er', 'ma zi']

2 访问列表元素

列表是有序集合,要访问列表中的任何一个元素,主要把整个元素在列表中的位置(索引)告诉python即可。要访问列表元素,可指出列表的名称,再指出元素的索引,并将其放在方括号内。

#定义一个列表
names = ["zhan san","li si","wang er","ma zi"]
#打印第二个元素
print(names[1])

#打印的结果:
li si

3 列表的索引

在python中,列表的索引从0开始,而不是从1开始。列表中的第一个元素的索引是0,而不是1。第二个元素的索引为1,根据这个简单的计数方式,要访问列表的任何元素,都可以将其顺序减1的结果作为索引。例如,上面names这个列表,"ma zi"的索引为3,使用name[3]就可以提出"ma zi"。

#打印第四个元素
print(names[3])

#结果
ma zi

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

#打印最后一个元素
print(names[-1])
#结果
ma zi

这种语法很有用,因为你经常需要在不知道列表长度的情况下访问最后的元素。这种约定也适用于其他负数索引,例如,索引 -2 返回倒数第二个列表元素,索引 -3 返回倒数第三个列表元素,以此类推

4 使用列表中的各个值

可像使用其他变量一样使用列表中的各个值。例如,你可以使用拼接根据列表中的值来创建消息。

#定义一个列表
names = ["zhan san","li si","wang er","ma zi"]
print("this is my frind,his name is " + names[0] + "!,nice to meet you!")

#结果
this is my frind,his name is zhan san!,nice to meet you!

5 修改、添加和删除元素

大多数列表都将是动态的,这意味着列表创建后,将随着程序的运行增删元素。例如我的friends列表,有一天其中一个朋友,他找你借钱,我借给了他,然后他不还我钱还拉黑了我,我的friends列表里面就少了一个元素。再过一段时间,又有一个朋友找我借钱,我确实没钱,自然没有借给他,他觉得我够朋友,酒吧我拉黑了,结果就是friends列表里面又少了一个元素。一年后,老板觉得我能力强,人品好,值得信赖,给我升值加薪,随之我的社交圈子变大,朋友数量增加,我的friends列表长度就增加了。

5.1 修改列表元素

要修改列表元素,可指定列表名和要修改的元素的索引,再指定该元素的新值。比如说我朋友列表,麻子同志改跟岳父姓,成了张麻子,朋友列表就该如此变化。

friends = ["许三多","魏无忌","麻子","白乐天","刘梦禅","步惊云","马三宝"]
print(friends)
#结果
['许三多', '魏无忌', '麻子', '白乐天', '刘梦禅', '步惊云', '马三宝']

#修改“麻子”为“张麻子”
friends[2] = "张麻子"
print(friends)

#修改的结果
['许三多', '魏无忌', '张麻子', '白乐天', '刘梦禅', '步惊云', '马三宝']

根据需要,你可以修改任何列表元素的值,也可以修改多个元素的值。

5.2 在列表中添加元素

 在实际中,我们可能出于各种各样的原因需要增加列表中的元素,Python 提供了多种在既有列表中添加新数据的方式。

5.2.1   在列表末尾添加元素

列表中添加新元素时,最简单的方式是将元素附加到列表末尾。给列表附加元素时,它将添加到列表末尾。继续使用friends列表做实验。

friends = ['许三多', '魏无忌', '张麻子', '白乐天', '刘梦禅', '步惊云', '马三宝']

#增加一个元素
friends.append("张三丰")
print(friends)

#结果
['许三多', '魏无忌', '张麻子', '白乐天', '刘梦禅', '步惊云', '马三宝', '张三丰']

方法 append() 将元素“张三丰”加如到了friends列表的最后位置,而不影响列表中的其他所有元素属性。方法 append() 让动态地创建列表易如反掌,使用append()可以在一个列表中多次的追加元素。实际中,我们无法提前预知列表中要存放的数据,我们经常要等程序运行后,才知道用户要在程序中存储哪些数据。为控制用户,可首先创建一个空列表,用于存储用户将要输入的值,然后将用户提供的每个新值附加到列表中。

schoolmate = []
#连续追加
schoolmate.append("卢云")
schoolmate.append("朱颜")
schoolmate.append("谷运")
print(schoolmate)

#结果
['卢云', '朱颜', '谷运']

5.2.2 在列表中插入元素

使用方法 insert() 可在列表的任何位置添加新元素,因为列表是有顺序的,为此,你需要指定新元素的索引和值。还以schoolmate为例

#第二个位置增加一个元素
schoolmate.insert(1,"柳长卿")
print(schoolmate)

#结果
['卢云', '柳长卿', '朱颜', '谷运']

在这个示例中,在第二个位置(索引为1),增加了一个元素。这种操作将列表中插入位置右边每个元素都右移一个位置,索引增加1。

5.3 从列表中删除元素

实际中,经常需要从列表中删除一个或多个元素,例如我的friends列表,某些原因,导致无法维持关系,我需要将拉黑的人员从friends列表中删除,可以通过指定位置(索引)或值来删除列表中的元素。

5.3.1 使用 del 语句删除元素

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

friends = ["许三多","魏无忌","麻子","白乐天","刘梦禅","步惊云","马三宝"]
print(friends)
#删除指定位置的元素
del friends[0]
print(friends)

#结果
['魏无忌', '麻子', '白乐天', '刘梦禅', '步惊云', '马三宝']

示例中,删除了第一个位置(索引0)的元素,完成后,元素长度减1,删除位置右边的元素索引随之减1。使用 del 可删除任何位置处的列表元素,条件是知道其索引,使用 del 语句将值从列表中删除后,你就无法再访问和使用它了。

5.3.2 使用方法 pop() 删除元素(弹出)

方法 pop() 可删除列表指定位置的元素,并让你能够接着使用它。列表就像一个栈,而pop删除列表指定位置的元素相当于弹出栈顶元素。有时候,你要将元素从列表中删除,并接着使用它的值。比如我的schoolmate列表。

schoolmate = []
#连续追加
schoolmate.append("卢云")
schoolmate.append("朱颜")
schoolmate.append("谷运")
print(schoolmate)
schoolmate.insert(1,"柳长卿")
print(schoolmate)
#删除指定位置的元素
new_scmate = schoolmate.pop(1)
print(new_scmate)
print(schoolmate)

#结果
['卢云', '朱颜', '谷运']
['卢云', '柳长卿', '朱颜', '谷运']
柳长卿
['卢云', '朱颜', '谷运']

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

5.3.3 根据值删除元素

有时候,我们并不一定知道要从列表中删除的值所处的位置,但是我们可能知道要删除的值。如果你只知道要删除的元素的值,可使用方法 remove() 。加入我要删除我的friends中的“步惊云”。

friends = ["许三多","魏无忌","麻子","白乐天","刘梦禅","步惊云","马三宝"]
print(friends)
del friends[0]
print(friends)

#修改“麻子”为“张麻子”
friends[2] = "张麻子"
print(friends)
#增加一个元素
friends.append("张三丰")
print(friends)
#删除一个指定值的元素
friends.remove("步惊云")
print(friends)

#结果
['许三多', '魏无忌', '麻子', '白乐天', '刘梦禅', '步惊云', '马三宝']
['魏无忌', '麻子', '白乐天', '刘梦禅', '步惊云', '马三宝']
['魏无忌', '麻子', '张麻子', '刘梦禅', '步惊云', '马三宝']
['魏无忌', '麻子', '张麻子', '刘梦禅', '步惊云', '马三宝', '张三丰']
['魏无忌', '麻子', '张麻子', '刘梦禅', '马三宝', '张三丰']

注意 :方法 remove() 只删除第一个指定的值。如果要删除的值可能在列表中出现多次,就需要使用循环来判断是否删除了所有这样的值。你将在第 7 章学习如何这样做。

6 组织列表

实际中,在创建的列表中,元素的排列顺序常常是无法预测的,因为我们并非总能控制用户提供数据的顺序,但是我们经常需要以特定的顺序呈现信息,所以,我们经常需要调整列表元素排列顺序。 Python 提供了很多组织列表的方式,可根据具体情况选用。

6.1 方法 sort()  对列表进行永久性排序

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

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

还可以按与字母顺序相反的顺序排列列表元素,为此,只需向 sort() 方法传递参数 reverse=True 。下面的示例将汽车列表按与字母顺序相反的顺序排列:

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

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

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

要保留列表元素原来的排列顺序,同时以特定的顺序呈现它们,可使用函数 sorted() 。函数 sorted() 让你能够按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
 

cars = ['bmw', 'audi', 'toyota', 'subaru']
#临时排序
print("now,the list is :")
print(cars)
print("\nafter sorted(),the list is :")
print(sorted(cars))
print("\nthe really list is :" )
print(cars)

#结果
now,the list is :
['bmw', 'audi', 'toyota', 'subaru']

after sorted(),the list is :
['audi', 'bmw', 'subaru', 'toyota']

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

我们首先按原始顺序打印列表,再按字母顺序显示该列表。以特定顺序显示列表后,我们进行核实,确认列表元素的排列顺序与以前相同。最后,调用函数 sorted() 后,列表元素的排列顺序并没有变。如果你要按与字母顺序相反的顺序显示列表,也可向函数 sorted() 传递参数 reverse=True 。

6.3 倒序

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

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

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

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

6.4 列表的长度

使用函数len()可以获取列表的长度,列表长度是从1开始计数,如cars列表,他的长度就是4.

cars = ['bmw', 'audi', 'toyota', 'subaru']
#获取长度
print(len(cars))

#结果
4

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值