从Scratch到Python 07 列表元组两兄弟

和字符串一样,列表是我们的老朋友。我们来回顾一下Scratch中列表有关的指令:

 

一旦我们创建了一个列表,就可以进行以下操作:

  • 将元素加入列表,可以直接加入到列表末尾,也可以插入到某项之前;
  • 删除列表中的元素,可以删除某一项,也可以删除全部元素;
  • 修改列表中的元素,将它替换为新的东西;
  • 查询列表中是否存在某个元素,获得特定元素的编号(就是索引);
  • 对列表中元素数量进行统计。

Python语言中同样有列表,列表的操作语法与Scratch不同,但道理是相通的,都是先创建列表,然后添加、删除、修改列表中的元素,查找和访问元素以及对列表进行统计等。

实际上,列表和字符串、元组统称为“序列类型”,它们三兄弟都是把多个数据组织起来的类型。字符串我们已经介绍过了,本节一起来认识列表和元组两兄弟。

一、列表创建和删除

1、 创建列表

在数据类型一节,我们提到,列表中的元素放置在“[ ]”中,元素之间用“,”隔开。所以我们用这种方式可以方便地创建列表:

### 创建列表

list1 = [1,2,3,4,5]  # 列表中元素都是数字
list2 = ['one','two','three','four','five']  # 列表中元素都是字符串
list3 = ['one',2,3.14,True]  # 列表中元素有字符串、整数、浮点数和布尔值
list4 = [ ]  # 列表中一个元素也没有,但它也是一个空的列表
print(list1)
print(list2)
print(list3)
print(list4)

运行结果:

 

 

从上面可以看出,一个列表可以包括多个元素(也可以一个都没有),这些元素可以是多种类型,比如数字、字符串和布尔值。其实,列表中的元素甚至可以是另外一个列表,也就是列表套着另一个列表,不过我们现在还用不到这么复杂的列表,就先不考虑它吧。

注意,虽然列表中元素可以是不同类型的,为了让程序容易理解,最好还是一个列表只保存一种类型的数据。另外再强调一下,“[]”和“,”都是英文半角状态下的符号,千万不要写错。

2、删除列表

删除列表很容易。直接写 del 列表名 就可以了。看示例:

list1 = [1,2,3,4,5]  
del list1
print(list1)

这段代码运行会出错,因为我们在第二行把创建的列表list1删除了,所以第三行输出时,Python找不到list1,会报异常:list1未定义。

 

二、访问和修改列表

1、访问列表元素

列表中的每个元素都有自己的序号,代表着元素在列表中的位置,这就是列表的索引。我们可以通过索引直接获取到列表的元素,索引序号从0开始,0表示第一个元素,1表示第2个元素,2表示第3个元素……依此类推,这和Scratch中的列表是不同的,需要特别注意。

列表还支持负数索引,从-1开始,-1表示最后一个元素,-2表示倒数第二个元素,-3表示倒数第三个元素……依此类推。

是不是发现列表的索引和字符串的索引挺像的?其实,本来字符串就是一种特殊的列表嘛。我们可以把上一节学到的索引用到本节,用于访问列表中的元素:

# 访问列表内容
list1 = ['乐乐', '欢欢', '天天', '格格', '图图']
print(list1[0])    # 输出“乐乐”
print(list1[-1])   # 输出“图图”
print(list1[1])    # 输出“欢欢”

2、向列表中添加元素。

向列表添加元素有三种方式: – append():在列表的末尾追加一个元素 – extend():在列表末尾追加一个新列表的内容,相当于把两个列表合起来 – insert():在列表的指定位置插入一个新元素

我们举例说明:

list1 = [1,2,3]
list2 = [5,6,7]
list1.append(4)  # list1变成了[1,2,3,4]
list1.extend(list2)  # list1变成了[1,2,3,4,5,6,7]
list1.insert(0,0)  # 在第0个索引处插入了新元素0,列表变成[0,1,2,3,4,5,6,7]
print(list1)

3、删除列表中的元素

删除列表元素的方法有四种: – del listName[ 索引 ]:移除索引位置的元素。 – listName.remove(元素):移除列表中某个值的第一个匹配项。 – listName.pop(索引):移除指定索引位置的元素后返回该元素的值。 – listName.clear():清空列表中的所有元素。

举例说明:

list1 = ['h','e','l','l','o']
del list1[0]
print(list1) # 打印 ['e', 'l', 'l', 'o']
list1.remove('l') # 删除了第一个‘l’
print(list1)  # 打印 ['e', 'l', 'o']
print(list1.pop(-1)) #删除最后一个元素‘o’
print(list1) # 打印['e', 'l']
list1.clear() # 清空列表
print(list1) # 打印 [ ]

4、修改列表中元素

直接通过索引获取该元素并重新赋值即可。

list1 = [1,2,3,4,5]
list1[0] = 0
print(list1)  # 打印出[0,2,3,4,5]

三、列表的统计与排序

1、列表统计

为了方便我们使用列表,Python提供了许多方法和函数对列表进行处理,比如统计元素出现的次数、列表长度、所有元素的和、列表中最大元素或最小元素等。

  • count():统计列表中指定元素出现的次数
  • index():返回列表中指定元素首次出现的索引
  • len():返回列表长度数值
  • sum():返回列表中所有元素的和
  • max():返回列表中最大的元素
  • min():返回列表中最小的元素

示例:

list1 = [1,2,3,4,5,5,4,3,2,1]
print(list1.count(3))  # 打印列表中元素3出现的次数:2
print(list1.index(2))  # 打印列表中第一个2出现的索引:1
print(len(list1))   # 打印列表的长度:10
print(sum(list1))  # 打印列表中所有元素的和:30
print(max(list1))  # 打印列表中最大的元素:5
print(min(list1))  # 打印列表中最小的元素:1

2、列表排序

列表的提供了可以对原列表中的元素进行排序的方法,格式如下: listName.sort(key = None, reverse = False) – listName:要排序的列表名 – key:表示从每个元素中提取一个用于比较的键一般使用默认的None – reverse:可选参数,值为True表示降序(从大到小),值为False表示升序(从小到大),默认为False,就是从小到大排序。

示例:

list1 = [9,5,2,4,8,3,1,7,6]
list1.sort()
print(list1)  # 打印出[1, 2, 3, 4, 5, 6, 7, 8, 9]
list1.sort(reverse=True)
print(list1)  # 打印出[9, 8, 7, 6, 5, 4, 3, 2, 1]

注意:sort()方法是没有返回值的,排序会直接影响原有列表。

四、元组

列表讲了这么多,终于讲到它们的兄弟——元组了。之所以要把它放到最后,是因为元组和列表实在是太像了,只要会用列表,你就会用元组。上面讲的列表相关内容,几乎都可以用于元组,只有下面两点不同: – 元组采用圆括号定义; – 元组生成之后是固定不变的,不能删除或替换其中的数据项。

示例:

tup1 = (1,2,3,4,5)    # 创建5个元素的元组
tup2 = ()    # 创建空元组
tup3 = (1,)    # 创建一个元素的元组,注意不能写成(1),那就成了单个数据不是元组
print(max(tup1))   # 获取元组中最大值
print(min(tup1))   # 获取元组中最小值
print(tup1[0])  # 打印元组第一个元素
print(tup1[-1])  # 打印元组最后一个元素
print(tup1[:2])  # 打印元组的切片
tup1 = (1,2,3)  # 元组重新赋值,因为不能删除修改元素
print(tup1)
del tup1    # 删除整个元组

学会了列表,元组是不是特别简单?

五、课后作业

完成以下列表操作:

1、创建一个关于食物的列表foodList,要包含cake、meat、fish、rice、orange、apple 等元素;

2、在foodList中增加 banana、bread,并打印foodList;

3、请打印出现在foodList列表中有多少个元素;

4、请将cake和rice从foodList列表中删除;

5、请将foodList中剩余的元素按照字母顺序排序并打印出来。

给TA赞助
共{{data.count}}人
人已赞助
综合资讯

挖坑小游戏/几何大逃杀(单图版)/Scratch实现

2023-6-2 22:49:41

综合资讯

从Scratch到Python 08 分支与循环

2023-6-3 9:36:46

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索