10

作者: 可爱叽叽 | 来源:发表于2018-12-07 21:58 被阅读0次

——列表——

现在呢,我们有这样一个问题,需要存储“安琪拉“、“妲己”、”貂蝉”、“王昭君”四个人的名字,“anqila”、“daji”、“diaochan”、“ wangzhaojun”。若是存为字符串的格式,names = "anqila daji diaochan wangzhaojun" (可以用空格隔开,也可以用逗号隔开)。若想取出其中的某一个名字,或者是修改其中的某一个名字,操作都极为不方便。

所以,为了解决这个问题,就定义了“列表”这样的数据类型。当需要存储的数据量较大时,就需要用列表来存储数据。

列表的基本格式为:names = [ ]

----------------------查----------------------

若是想取出某个名字,直接输入其角标即可,从左往右从0开始计数

例如想取出“diaochan”这个名字。“diaochan”的下角标为2。

假设想要取最后一个数据,如果知道这个列表的长度,假定例子中的4个名字,则可以直接print(name[3]),就把“wangzhaojun”取出来了。

要是不知道这个列表的长度,该怎么办呢?方法如下:

print(names[-1])说明要是从右边开始计数,就是从-1开始,从右往左依次为:-1,-2,-3,……

要是想一次性取出连续的“daji”和“diaochan”这两个名字。方法如下:

为什么是names[1:3]而不是names[1:2]呢?

这种方法可以简记为“顾头不顾尾”,names[x:y]从角标为x的位置开始取数据,一直到y,但却不包括角标为y的数据。这种方法称为“切片”

考虑,要是从右往左,想取最后两个数据,是否应该是print(names[-1:-3]) ? 验证一下。

可以看到,没有取到任何数据。

原因是切片这个操作,顺序只能是从左往右,不存在从右往左这种情况。

那么我们接着考虑若是调换一下顺序呢?

可以看到,考虑到“顾头不顾尾”的原则,取出的是-3和-2位置的数据,也就是“daji”和“diaochan”。我们接着想到,应该是从-2开始,那么结束位置若是-1,则取出的数据会只有“diaochan”,不包含最后一个数据“wangzhaojun”,那又应该怎么解决?

解决办法是:若是要取到最后一个位置,则结束位置空着。如下:

同样的,要是想从开头位置开始取,则也是起始位置空着。例如:想取前三个数据。

与print(names[0:3])的效果是一样的。(“顾头不顾尾”)

----------------------增----------------------

如果我想在列表的后面继续追加一个名字小乔,“xiaoqiao”,那应该怎么办呢?

在列表的后面继续追加,所用的函数为:  .append()

若是我不想在列表的后面追加,而是在任意位置插入值呢?

所用的函数为:  .insert() ,其格式为: .insert(想要待在的位置,插入的内容)。

假设我想在貂蝉的前面添加上大乔,“daqiao”。则程序如下:

这样就将“daqiao”这个内容插入在了“diaochan”的前面,也就是待在了names[2]的位置。

另外,只能一个值一个值的插入,不能批量插入

----------------------改----------------------

改的操作很简单,直接在相应的位置,给它赋上新的值即可。

格式为:列表名[位置]=“赋的新值”

例如:我想把“diaochan”改成“lvbu”。

----------------------删----------------------

举例:想把列表中的“anqila”删掉。

①用函数 .remove()

格式为:列表名.remove(“删除的内容”)

② 用del 列表名[位置]

③用函数 .pop()

我们先看一下函数 .pop()的源代码:

意思是:在索引中移除和返回项,如果括号里面什么也没有,则默认为最后一项。

如果我们要删除“anqila”,则应该是names.pop(0)。

如果.pop()括号里面没有标明位置,则默认删除的是最后一项。

----------------------查询位置----------------------

现在考虑这样一个问题,若是我想知道“daji”这个名字在列表中的位置,应该怎么操作?

所用函数为: .index("内容")

这样就可以将所查找内容的位置找了出来,若是同时想把内容也取出来:

----------------------查询出现次数----------------------

考虑这样一种情况:列表里可能存在多个重复的名字,那么如何统计这个列表里某个名字重复了几次?

所用到的函数为:.count("内容")

例如:在names = ["daji","anqila","daji","diaochan","daji","wangzhaojun","daji"]这个列表里,我想知道names里面有几个“daji”。

----------------------清空----------------------

所用函数: .clear()

----------------------反转----------------------

所用函数: .reverse()

----------------------排序----------------------

所用函数: .sort()

我们对names = ["chengyaojin","wangzhaojun","anqila","houyi","daji"]进行排序。

可以看出来,排序的顺序为:按照首字母的顺序。

再更改一下列表names:

可以看出来顺序为:特殊字符>数字>大写字母>小写字母,是按照ASCII码的顺序来进行排序的

----------------------扩展----------------------

所用函数为: .extend(要合并的列表名)

举例:现有另外一个列表names1,想把names1并到names里。

可以看到,names1是依然存在的,那么我要是想删掉这个列表names1 呢?

所用语句为:del names1

这样names1就不存在了。

相关文章

网友评论

      本文标题:10

      本文链接:https://www.haomeiwen.com/subject/nwnzcqtx.html