一起划水
我们之前接触到的变量类型都只能存储一个变量,如果有多个变量需要被存储的话,我们可以使用列表进行处理。
零、目标
1.介绍列表
2.对列表进行操作
3.内置函数介绍
一、介绍列表
列表是最常见的Python数据类型,列表的数据项不需要相同的类型。
此处的列表类似于其他语言的数组,但是功能上要强大很多。
创建一个列表,只需要把用逗号分割开的不同数据项用方括号括起来即可。
[1, 2, 3, True, "huaji", 3.14]
列表的索引从0开始(即第一个元素的下标是0)。
列表也可以进行切片、索引和组合等操作。
二、对列表进行操作
1.访问列表中的值
使用下标索引来访问列表中的值。
2.更新列表/修改列表元素的值
使用赋值符号对列表元素进行修改。
3.删除列表元素
a.使用del语句删除列表元素
这里注意del语句的语法是del sth,并不像函数或方法那样有对小括号。
你也可以用del删除整个list。
这里使用List作为变量名的原因是list在Python中是数据类型的名称,就像int和float一样,直接作为示例,print出来的结果会奇奇怪怪的。
b.使用remove()方法删除元素
remove()方法的用法是a.b()型的,a是要操作的对象,b是操作的方法,括号内是操作的参数。
c.使用pop()方法删除指定位置元素
在使用的时候需要直接指定元素下标,不指定的时候直接删除最后一个元素。
也是按照a.b的形式使用。
4.添加列表元素
使用append()方法在列表末尾添加元素。
同样是a.b的形式。
5.定义多维列表
使用列表嵌套即可,即将子列表作为父列表的元素。
List = [[1,"小明"],[2,"小刚"],[3,"小丽"]]
6.列表操作符
列表对"+"和"*"的操作符金额字符串相似,"+"用来组合列表,"*"用来重复列表。
Python语句 | 描述 | 运算结果 |
len([1,2,3]) | 求长度 | 3 |
[1,2,3]+[4,5,6] | 组合两个列表 | [1,2,3,4,5,6] |
[1,2,3]*2 | 将列表重复 | [1,2,3,1,2,3] |
"huaji" in [1,2,3] | 判断元素是否在列表 | False |
for x in [1,2,3]: print(x,end=",") | 对元素进行迭代 | 1,2,3, |
三、内置函数简要介绍
Python列表中内置了很多非常有用的功能函数。
在这里,我们假设列表名为list:
- list.append(x)
在列表末尾添加新的元素x。 - list.count(x)
统计x在列表中出现的次数。 - list.extend(seq)
seq是其他序列,在列表末尾添加其他序列的多个值(用序列扩充原列表)。如果seq是一个字典,则用其键(key)扩充。 - list.index(x)
从列表中找到第一个x出现的位置的下标。 - list.insert(index, x)
将x插入到下标为index处。 - list.pop(index)
删除某个元素并返回其值。index为可选参数,如果不填则删除最后一个元素,否则删除下标为index的元素。
del(list[index])也是删除,但是删除掉这个元素之后,我们就不能再调用了(如果之前没有存储的话)。
利用好这里“返回”的这个特性,在删除这个元素之后,我们还能再次调用。这个变量能够“返回”,我们就可以利用变量将其“接收”或通过函数将其“调用”。
下面是调用的例子,print()函数调用到了list.pop()返回的参数。
下面是接收的例子,我将返回的值赋给了几个变量。
- 形象一点,del sth相当于你对机器人说“帮我把某个抽屉里xx位置的东西扔掉”,机器人照着你的指令把东西扔掉了;而list.pop(index)则是在你说完这句话后,机器人告诉你:“我把你说的那个东西扔掉了,扔掉的东西是xxx······”
- list.remove(x)
将list中第一个出现的x删掉。 - list.reverse()
将列表的顺序反转,即list = list[::-1],中间的"="是赋值号。 - list.sort(key, reverse)
key主要是用来进行比较的元素(类似于excel里的“关键字”),只有一个参数,具体的函数的参数就是取自于可迭代对象中,指定可迭代对象中的一个元素来进行排序,适用于列表的嵌套。
reverse是排序规则,reverse = True 降序, reverse = False 升序(默认)。
另外,这个函数会直接改变列表元素的排序顺序,使用时要特别注意这一点。
首先来说说没有列表嵌套的情况吧。这种情况下无非就是升序降序的分类讨论了。
注意!reverse参数有默认值,如果什么都不填的之后就使用默认值。比如:
但是如果我希望以降序排列,那么我直接填入一个False可以吗?
- 可以看到,程序报错了。这里我们要特别注意,由于这里有两个需要填的参数,key是选填的。如果我们仅仅填入一个False,计算机是不知道应该把这个False给谁的。到底是给key还是给reverse?
- 这句话里,我直接指定:将True赋给reverse,这样就非常明确了。reverse在这个函数中是固定的名字,是需要记忆的。
- len(list)
返回list的长度。 - max(list)
返回列表里的最大数值。 - min(list)
返回列表里的最小数值。 - list(seq)
将seq转化为list类型的数据。seq可以是字典,字符串,元组,集合。
四、实例
今天我在计算自己平均分(按学分加权)的时候本来打算按计算器,后来觉得可能有点费时间,于是就决定设计程序。
一通操作猛如虎,我写出了这样的程序,里面有不少涉及到列表。虽然涉及到的知识只有一点点,但至少是提供了一种应用的思路?(也许)
后来发现设计程序更费时间,有这点功夫我早就按完计算器了