109 lines
4.9 KiB
Markdown
109 lines
4.9 KiB
Markdown
# 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 | 一系列,范围,区间,可以理解为生成区间序列 | |