在实际开发中,经常需要将一组(不只一个)数据存储起来,以便后边的代码使用。说到这里,一些读者可能听说过数组(Array),它就可以把多个数据挨个存储到一起,通过数组下标可以访问数组中的每个元素。
需要明确的是,Python中没有数组,但是加入了更加强大的列表。如果把数组看做是一个集装箱,那么 Python 的列表就是一个工厂的仓库。
从形式上看,列表会将所有元素都放在一对中括号[ ]
里面,相邻元素之间用逗号,
分隔,如下所示:
1 | [element1, element2, element3, ..., elementn] |
格式中,element1 ~ elementn 表示列表中的元素,个数没有限制,只要是 Python 支持的数据类型就可以。****
从内容上看,列表可以存储整数、小数、字符串、列表、元组等任何类型的数据,并且同一个列表中元素的类型也可以不同。比如说:
1 | ["CoderLeiShuo", 1, [2,3,4] , 3.0] |
可以看到,列表中同时包含字符串、整数、列表、浮点数这些数据类型。
注意,在使用列表时,虽然可以将不同类型的数据放入到同一个列表中,但通常情况下不这么做,同一列表中只放入同一类型的数据,这样可以提高程序的可读性。
另外,在其它 Python 教程中,经常用 list 代指列表,这是因为列表的数据类型就是 list,通过 type() 函数就可以知道,例如:
1 | "CoderLeiShuo", 1, [2,3,4] , 3.0] ) type( [ |
一、Python创建列表
在 Python 中,创建列表的方法可分为两种,下面分别进行介绍。
使用[ ]直接创建列表
使用[ ]
创建列表后,一般使用=
将它赋值给某个变量,具体格式如下:
1 | listname = [element1 , element2 , element3 , ... , elementn] |
其中,listname 表示变量名,element1 ~ elementn 表示列表元素。
例如,下面定义的列表都是合法的:
1 | num = [1, 2, 3, 4, 5, 6, 7] |
另外,使用此方式创建列表时,列表中元素可以有多个,也可以一个都没有,例如:
1 | emptylist = [ ] |
这表明,emptylist 是一个空列表。
使用list()函数创建列表
除了使用[ ]
创建列表外,Python 还提供了一个内置的函数 list(),使用它可以将其它数据类型转换为列表类型。例如:
1 | #将字符串转换成列表 |
二、Python访问列表元素
列表是 Python 序列的一种,我们可以使用索引(Index)访问列表中的某个元素(得到的是一个元素的值),也可以使用切片访问列表中的一组元素(得到的是一个新的子列表)。
使用索引访问列表元素的格式为:
1 | listname[i] |
其中,listname 表示列表名字,i 表示索引值。列表的索引可以是正数,也可以是负数。
例如:
1 | names = ["烁烁", "乐乐", "小乐", "小烁"] # 声明一个names列表 |
遍历列表元素
我们也可以结合for循环来遍历列表中的所有元素,例如:
1 | names = ["烁烁", "乐乐", "小乐", "小烁"] |
上面演示的方法是通过下标索引来获取到列表元素的。除了通过下标间接访问列表元素,我们还可以通过直接遍历列表来获取列表元素
例如:
1 | names = ["烁烁", "乐乐", "小乐", "小烁"] |
输出结果如下:
1 | 烁烁 |
来道小练习
1 | # 练习:遍历姓名列表,判断列表中是否有叫乐乐的人 |
在上面的代码中,我们通过for循环验证了列表中存在乐乐这个人,但其实在Python中,我们有更简单的做法,就是使用in
运算符
in运算符
通过in
运算符可以判断某个元素是否在列表中,例如:
1 | names = ["烁烁", "乐乐", "小乐", "小烁"] |
使用切片访问列表元素的格式为:
1 | listname[start : end : step] |
其中,listname 表示列表名字,start 表示起始索引,end 表示结束索引,step 表示步长。
例如:
三、Python修改列表元素
Python提供了两种修改列表(list)元素的方法,你可以每次修改单个元素,也可以每次修改一组元素(多个)
修改单个元素
修改单个元素非常简单,直接对元素赋值即可。
例如:
1 | computerBrands = ["华硕", "联想", "惠普", "戴尔", "苹果"] |
输出结果为:
1 | ['华硕', '联想小新Pro', '惠普', '戴尔', '华为'] |
如果我们准确地知道元素值所在的下标位置,我们可以使用下标来访问元素并修改。但更多情况下,我们只知道元素的值,而不知道元素的位置,所以只能通过遍历列表来实现修改元素值的操作
通过遍历修改元素值
我们来尝试通过遍历的方式来将电脑品牌名中,联想的名字修改为联想小新Pro
还记得我们在上面通过直接遍历列表来获取元素值吗?那么你很容易写出下面的代码:
1 | computerBrands = ["华硕", "联想", "惠普", "戴尔", "苹果"] |
运行结果如下:
1 | computerBrands = ["华硕", "联想", "惠普", "戴尔", "苹果"] |
列表并没有发生改变,这是为何?因为brand
变量存储的是列表中遍历的值的副本,修改的是brand
的值,并非原列表的值
1 | computerBrands = ["华硕", "联想", "惠普", "戴尔", "苹果"] |
正确的方法应该是通过下标来修改
1 | computerBrands = ["华硕", "联想", "惠普", "戴尔", "苹果"] |
输出结果为:
1 | computerBrands = ["华硕", "联想小新Pro", "惠普", "戴尔", "苹果"] |
修改一组元素
Python 支持通过切片语法给一组元素赋值。在进行这种操作时,如果不指定步长(step 参数),Python 就不要求新赋值的元素个数与原来的元素个数相同;这意味,该操作既可以为列表添加元素,也可以为列表删除元素。
本文作者: CoderLeiShuo
本文链接:https://coderleishuo.github.io/lele/19235.html
版权声明: 本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。转载请注明出处!