青少年Python编程系列12:Python的列表类型(一)

青少年Python编程系列12:Python的列表类型(一)前面我们讲的数据类型都是Python中的基本数据类型,所谓基本数据类型,就是一个变量里面只能保存一个值。那如果有一堆相关联的变量,我们要把它存到

大家好,欢迎来到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()方法的异同:

  1. 两者都可以删除列表中的元素
  2. pop()方法一次只能删除一个元素,del可以通过切片批量删除多个
  3. 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

(0)
上一篇 2024-08-06 18:33
下一篇 2024-08-08 18:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信