大家好,欢迎来到IT知识分享网。
前面我们讲的数据类型都是Python中的基本数据类型,所谓基本数据类型,就是一个变量里面只能保存一个值。那如果有一堆相关联的变量,我们要把它存到一起,那怎么办呢?这就要用到复合类型了。从这节课开始,我们要见到第一个复合类型,也是最重要的一个复合类型,那就是列表。
一、什么是列表
列表(list)是一种数据项构成的有限序列,即按照一定的线性顺序,排列而成的数据项的集合,在这种数据结构上进行的基本操作包括对元素的的查找,插入,和删除。
创建一个列表,只要把逗号分隔的不同的数据项使用方括号括起来即可。字符、字符串、数值等不同数据类型的数据可以保存到同一个列表中。
下面我们来看看列表的具体例子:
list1 = ['iOS', '安卓', '鸿蒙'] list2 = ['a', 'b', 'c', 'd'] list3 = [1, 2, 3, 4, 5]
列表中的每一个数据项我们称为列表的元素。列表中的每个元素可以是相同数据类型,也可以是不同的数据类型。但是在实际使用中一般是相同的数据类型。
二、列表和字符串通用的操作
2.1 列表的索引和切片
前面我们学过字符串的索引和切片,具体可以先看一下青少年Python编程系列9:Python字符串的进阶操作(一)。我们知道,字符串的索引的是每一个字符,而列表的索引是每一个元素。
列表的索引定义的方式与字符串一致,正向索引从0开始计数,反向索引从-1开始计数。
list1 = |
[ |
1 |
, |
2 |
, |
3 |
, |
4 |
, |
5 |
] |
正向索引 |
list1[0] |
list1[1] |
list1[2] |
list1[3] |
list1[4] |
||||||
反向索引 |
list1[-5] |
list1[-4] |
list1[-3] |
list1[-2] |
list1[-1] |
列表的切片与字符串定义也是一样:
list[start:end:step]
start是起始索引
end是结束索引(不包含结束索引号)
step是步长
起始索引不输入默认为 0,结束索引不输入默认为列表长度,步长不输入默认为1
下面我们看一下列表切片的例子:
list1 = [1, 2, 3, 4, 5, 6] list1[0:2] # [1, 2] list1[:2] # [1, 2] list1[1:4] # [2, 3, 4] list1[1:] # [2, 3, 4, 5, 6] list1[0:4:2] # [1, 3] list1[:] # [1, 2, 3, 4, 5, 6] list1[-4:-1] # [3, 4, 5] list1[:-1] # [1, 2, 3, 4, 5] list1[-1:-4:-1] # [6, 5, 4] list1[1:-1] # [2, 3, 4, 5] list1[-1::-1] # [6, 5, 4, 3, 2, 1] list1[::-1] # [6, 5, 4, 3, 2, 1]
注意:列表的索引得到的值的类型取决于元素的值的类型,而列表的切片的数据类型为列表。
2.2 列表拼接、列表的复制
前面我们讲算术运算符时,我们讲过“+”运算符可以进行字符串的拼接、“*”运算符可以进行字符串的复制。这两个运算符对列表同样适用。
我们看看一下例子:
list1 = [1, 2, 3] list2 = [2, 3, 4] list3 = list1 + list2 list4 = 3 * list1 print(list3) # [1, 2, 3, 2, 3, 4] print(list4) # [1, 2, 3, 1, 2, 3, 1, 2, 3]
2.3 列表的长度
前面我们讲过len()函数可以计算字符串的长度,len()函数也可以计算列表的长度。
list1 = ['iOS', '安卓', '鸿蒙'] list2 = ['a', 'b', 'c', 'd'] list3 = [1, 2, 3, 4, 5] print(len(list1)) # 3 print(len(list2)) # 4 print(len(list3)) # 5
2.4 成员运算符
前面我们讲过通过in运算符可以判断子字符串是否在字符串中,同样可以用于判断元素是否在列表中。
fruit = ['apple', 'pear', 'orange', 'mango'] print('orange' in fruit) # True print('lemon' in fruit) # False
三、列表元素的修改
列表中的元素的值是可以修改的,修改的方法是:
list[index] = value
index是索引号,value是修改后的值。
我们看看具体的例子:
list1 = [100, 200, 300, 400] list1[2] = 800 print(list1) # [100, 200, 800, 400]
例子中修改了索引为2的元素的值,将值改成了800。
除了对单个元素的值进行修改外,我们还可以通过切片,对多个元素的值进行批量的修改。
注意:多个值要写成列表的形式。
list[start:end] = [a, b, c, d]
我们看一下具体的例子:
list1= [2, 4, 6, 8, 10, 12] list1[1:4] = [3, 5, 7] print(list1) # [2, 3, 5, 7, 10, 12]
在这个例子中,我们批量把索引为1到4(不包括4)的元素的值改成了3,5,7。
四、列表元素的删除
删除列表中的元素,可以使用del关键字。可以删除一个元素,也可以删除多个元素,同样也可以删除整个列表。
我们看一下具体的例子:
master = ['黄药师', '欧阳锋', '一灯', '洪七公', '王重阳'] del master[4] print(master) # ['黄药师', '欧阳锋', '一灯', '洪七公'] del master[2:4] print(master) # ['黄药师', '欧阳锋'] del master print(master) # 程序报错(列表被删除,变量已不存在)
除了del关键字外,还可以使用列表的pop()方法删除单个元素的值。具体的使用方法如下:
element = list.pop(index)
该方法的参数为需要删除的元素的索引值,可以不写,不写为列表的最后一个元素。函数有返回值,返回值为列表中被删除的元素的值。我们看具体的例子:
a = ['a', 'b', 'c', 'd'] p = a.pop() print(a) # ['a', 'b', 'c'] print(p) # d
del关键字和pop()方法的异同:
- 两者都可以删除列表中的元素
- pop()方法一次只能删除一个元素,del可以通过切片批量删除多个
- pop()方法可以获取被删除元素的值,del不可以
五、课后思考题
1、编程题
fruit = [‘apple’, ‘orange’, ‘pear’, ‘kiwi’, ‘mango’, ‘banana’]
①打印前面2种水果
②打印从第2种到第5种水果
③从第1、3、5种水果
④倒序打印出所有水果
2、编程题
有如下列表:
general = [‘刘备’, ‘关羽’, ‘张飞’, ‘赵云’, ‘诸葛亮’, ‘庞统’]
将诸葛亮改成马超,将庞统改成黄忠。
3、编程题
超市的系统里面有一个数据列表,是所有需要进货的目录,但是由于疫情,口罩、消毒液、一次性防护服、防护手套等(在列表的倒数第2—5个位置)都无法进到货物,所以要从列表中删除。
请把这些货物从列表中删除。
goods = [“鸡蛋”,”牛奶”,”啤酒”,”拖把”,”香肠”,”苹果”,”香蕉”,”巧克力”,”饼干”,”方便面”,”口罩”,”消毒液”,”一次性防护服”,”防护手套”,”帽子”]
4、编程题
疫情期间,各地都开通了二维码通行证,绿色代表安全,可以通行,黄色代表有可能不安全,需要在家隔离,红色代表是高风险,需要进行就医检查。我们今天模拟一下这个检查方式。
新建安全的人员green列表,用来记录人名,一开始,我们需要清空这个列表,然后我们需要把列表JianCeGuo里面的所有人都导入到green里面,这时候,有一位名叫“张三丰”的人要进入小区(我们输入“张三丰”),我们用程序如何检查他是否安全呢?
JianCeGuo = [‘张伟’, ‘李华’,”王芳芳”,”张琴”,”刘明”,”马云”]
六、上节课思考题答案
1、参考代码:
a = float(input('请输入一个数:')) if a > 0: print('正数') elif a < 0: print('负数') else: print('零')
2、参考代码:
score = int(input("请输入分数:")) if score < 60: print('不及格') elif score <= 79: print('及格') elif score <= 89: print('良好') elif score >= 90: print('优秀')
3、参考代码:
sentence = input("请输入一句英文:") if 'the' in sentence.lower(): # 如果单词the在句子开头会大写,需要转换成小写字母判断 print('这段话里面有单词the') else: print('这段话里面没有单词the')
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/77702.html