# python3小白课:列表元组入门 上节课我们知道了列表元组之间是可变和不可变的关系,其他十分类似,因此我们在学习的时候可以一起学习进行类比。举一反三,这样大家掌握得比较快。 我们直接就着代码来进行学习吧: ```python # coding:utf-8 # 简单定义列表、元组,里面的元素可以是各种基础的数据类型,同一个列表、元组中可以多种类型混合 a = [1, "小白", None] b = (1, "小白", None) # 除了这种定义方法,还能使用关键字命令生成列表或元组,常用来转换 aa = list(b) bb = tuple(a) print(aa, bb) print(list(), tuple(), [], ()) # 多种方法快速生成空的列表或元组 # 可以通过索引进行访问,还是用到[],跟之前字符串基本是类似的,取出来的称为子序列 print(a[0]) print(b[-2]) print(a[1:]) print(b[0:2:2]) # 列表之间、元组之间可以相加变成新序列,但不能列表+元组 print(a + [2]) # 当一个元组只有一个元素的时候,需要在结尾多写一个逗号,否则不能视为元组,这是规定:(2,) # 如果写(2),它等价于数字2,要变成元组必须加上, print((2) == 2) # 你可以这样测试 print(b + (2,)) # 列表和元组还支持乘法,可以让列表或元组重复n次 print(a * 3) print(b * 4) # 使用in运算符可以查看某元素在不在列表或元组中,这个我们已经学过 print(1 in a) print(None in b) # len函数可以查看列表或元组有多少个元素 print(len(a), len(b)) # max、min函数可以获取列表或元组中的最大或最小值,但需要元素是相同类型且可以比较大小才行 c = [3, 2, 9, 12, 30] d = ("apple", "banana", "color", "zoo") # 如果是字符串,会进行字母比较 print(max(c), min(c)) print(max(d), min(d)) """ python支持序列封包(Sequence Packing)和序列解包(Sequence Unpacking)的功能 序列封包:把多个值赋值给一个变量时,会自动将多个值封装为一个元组 序列解包:可以将列表和元组赋值给多个变量,这样元素会被依次赋值给每个变量 我们来看一下代码示例: """ # 序列封包 a = 1, 4, 8 print(a, type(a)) # 序列解包 a, b, c = [1, 2, 3] d, e, f = (4, 5, 6) print(a, b, c) print(d, e, f) # 在变量名左侧加上*号,这个变量就可以表示一个列表,支持在解包时存入列表 a = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] # 第一、第二个元素分别赋值给a1,a2,剩下的元素赋值给a3 a1, a2, *a3 = a print(a1, a2, a3, sep="|") # 同理也有如下写法,啥意思呢?效果可以自行测试 a1, *a2, a3 = a print(a1, a2, a3, sep="|") *a1, a2, a3 = a print(a1, a2, a3, sep="|") ``` 通过上面的学习,大家是不是对列表、元组的初步使用有了一个更深刻的认识呢?希望里面涉及的简单例子大家都自己跑一跑,保证自己能够理解和记忆。 --- ### range函数 range函数是一个生成列表很重要的函数,通常会用在for循环的流程控制当中,关于流程控制,后面的课程我们将会有更加详细的讲解。 range函数经历了一些演变,我们只需要记忆python3中的概念就好,在python3中,range函数返回一个range对象。可以被遍历(遍历的知识我们在后面再详细讲解),也可以转换成列表或者元组,这里我们来讲讲转换吧。 ```python # coding:utf-8 # range支持1~3个参数传入,跟[]索引一样,分别表示开始、结束(不包含)、步长 # 我们可以通过list()函数转化为列表输出查看结果,如果要转成元组,使用tuple()转即可,不再赘述 print(list(range(10))) print(len(range(10))) print(list(range(1, 10))) print(list(range(1, 10, 2))) # 步长如果不传,默认为1,如果序列是逆向的,则需要传入负的步长 print(list(range(1, -10, -1))) print(list(range(1, -10, -2))) ``` 关于range的知识,大家需要先行了解,然后熟练掌握,后续我们做循环流程控制的时候,它是一种重要的手段。 ### 单词释义 | 单词 | 释义 | | ------------------ | ------------------------------------------ | | list | 列表 | | tuple | 元组 | | apple | 苹果 | | banana | 香蕉 | | color | 颜色 | | zoo | 动物园 | | max | 最大值 | | min | 最小值 | | Sequence Packing | 序列封包 | | Sequence Unpacking | 序列解包 | | range | 一系列,范围,区间,可以理解为生成区间序列 |