一, 列表
1. 概述:
通过前两天的学习, 我们知道变量可以存储数据, 但是一个变量只能存储一个数据, 现在有一个班级, 班级有 20 个人, 现在求班级的平均年龄.
本质: list 列表的本质是一种有序的集合
2. 创建列表
语法: 列表 =[元素 1, 元素 2, 元素 3......]说明: 列表中的选项被称为元素, 跟 string 类似, 下标也是从 0 开始计数
- # 创建空列表
- list1 = []
- # 创建带有元素的列表
- list2 = [10, 20, 30, 10]
- print(list2)
在列表中元素的数据类型可以不同(灵活性)
- list3 = [33, "good", True, 10.32]
- print(list3)
3. 列表元素的访问
列表的取值
功能: 访问 list 列表中元素值
语法: 列表名[索引]
- list4 = [22, 33, 12, 32, 45]
- # 下标从 0 开始, 最大值为 len(list4)-1
- print(list4[0])
注意: 当索引值大于 len(list4)-1 的时候, 会出现错误
列表元素的替换
功能: 更改列表元素的值
语法: 列表[下标] = 值
- list4 = [22, 33, 12, 32, 45]
- list4[0] = "hello"
- print(list4[0])
4. 列表操作
列表的组合
语法: 列表 3 = 列表 1 + 列表 2
- list1 = [1, 2, 3]
- list2 = ['hello', 'yes', 'no']
- list3 = list1 + list2
- print(list3)
列表的重复
语法: 列表 = 列表 1*n
若存在则返回 True, 否则返回 False
- list1 = [1, 2, 3]
- print(1 in list1)
列表截取
语法: 列表 [start:end] 表示获取从开始下标到结束下标的所有元素, 包含 start 不包含 end
- list1 = [1, 2, 3, 'hello', 'yes', 'no']
- print(list1[2:4])
- # 若不指定 start, 则默认从 0 开始截取, 截取到指定位置
- # 若不指定 end, 则从指定位置开始截取, 截取到末尾结束
二维列表
语法: 列表 = [列表 1, 列表 2, 列表 3,......, 列表 n]
- # 创建二维列表, 即列表中的元素还是列表
- list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
二维列表取值
语法: 列表名[下标 1] [下标 2]
注意: 下标 1 代表第 n 个列表(下标从 0 开始, 下标 2 代表第 n 个列表中的第 n 个元素)
- list1 = [[1, 2, 3],[2, 3, 4],[5, 4, 9]]
- print(list1[0][0])
5. 列表的方法
list.append(元素 / 列表)
功能: 在列表中末尾添加新的元素[在原本的列表中追加元素]
注意; append()中的值可以是列表也可以是普通元素
- >>> list1 = [3, 4, 6]
- >>> list1.append(6)
- >>> print(list1)
- [3, 4, 6, 6]
- list.extend(列表)
功能: 在列表的末尾一次性追加另外一个列表中的多个值
注意: extend()中的值只能是列表 / 元组[一个可迭代对象] , 不能是元素
- >>> list1 = [1,2,3]
- >>> list2 = [3, 4,5]
- >>> list1.extend(list2)
- >>> print(list1)
- [1, 2, 3, 3, 4, 5]
- list.insert(下标值, 元素 \ 列表)
功能: 在下标处插入元素, 不覆盖原本的数据, 原数据向后顺延
注意: 插入的数据可以是元素也可以为列表
- >>> list1 = [1,2,3]
- >>> list1.insert(1,0)
- >>> print(list1)
- [1, 0, 2, 3]
- >>> list1.insert(1,[2, 4, 8])
- >>> print(list1)
- [1, [2, 4, 8], 0, 2, 3]
- list.pop(下标值)
功能: 移除列表中指定下标处的元素(默认移除最后一个元素), 并返回移除的数据
- >>> list1 = [1, [2, 4, 8], 0, 2, 3]
- >>> list1.pop()
- 3
- >>> print(list1)
- [1, [2, 4, 8], 0, 2]
- >>> list1.pop(2)
- 0
- >>> print(list1)
- [1, [2, 4, 8], 2]
- list.remove(元素)
功能: 移除列表中的某个元素第一个匹配结果
- >>> list1 = [1, 2, 3]
- >>> list1.remove(2)
- >>> print(list1)
- [1, 3]
- list.clear()
功能: 清除列表中所有的数据
- >>> list1 = [1, 2, 3]
- >>> list1.clear()
- >>> print(list1)
- []
- list.index(下标[,start][,stop])
功能: 从指定的范围的列表中找出某一个第一匹配的索引值
若不指定范围, 则默认是整个列表
- >>> list1 = [1, 2, 3]
- >>> list1.index(2)
- 1
- >>> list1.index(4)
- Traceback (most recent call last):
- File "<stdin>", line 1, in <module>
- ValueError: 4 is not in list
注意: 若在列表中找不到这个元素, 则会报错
list.count(元素)
功能: 查看元素在列表中出现的次数
- >>> list1 = [1, 2, 3, 1]
- >>> list1.count(1)
- 2
- len(list)
功能: 获取元素列表个数
- >>> list1 = [1, 2, 3, 1]
- >>> len(list1)
- 4
- max(list)
语法: 获取列表中的最大值
- >>> list1 = [1, 2, 3, 1]
- >>> max(list1)
- 3
- min(list)
语法: 获取列表中的最小值
- >>> list1 = [1, 2, 3, 1]
- >>> min(list1)
- 1
- list.reverse()
语法: 列表倒序
- >>> list1 = [1, 2, 3, 1]
- >>> list1.reverse()
- >>> print(list1)
- [1, 3, 2, 1]
- list.sort()
语法: 列表排序 默认升序
- >>> list1 = [1, 2, 3, 1]
- >>> list1.sort()
- >>> print(list1)
- [1, 1, 2, 3]
浅拷贝
语法: list1 = [1, 2, 3, 4]
list2 = list1
深拷贝:
语法: list1 = [1, 2, 3, 4]
list2 = list1.copy()
其中深拷贝为内存拷贝, 开辟了新的内存空间
list(元组)
功能: 将元组转为列表
- >>> list1 = list((1, 2, 3, 4))
- >>> print(list1)
- [1, 2, 3, 4]
列表的遍历
使用 for 循环遍历列表
语法:
for 变量名 in 列表
语法
功能: for 循环主要用于遍历列表
遍历指的是依次访问列表中的每个元素, 获取每个下标对应的元素值
说明: 按照顺序获取列表中的每个元素, 赋值给变量名, 再执行语句, 如此循往复, 直到取完列表中所有的为止
- >>> list1 = ['hello', 78, '你好', 'good']
- >>> for item in list1:
- ... print(item)
- ...
- hello
- 78
你好
good
同时遍历下标与元素
语法:
for 下标, 变量 in enumerate(列表)
语句
- >>> list1 = ['hello', 78, '你好', 'good']
- >>> for index,item in enumerate(list1):
- ... print(index, item)
- ...
- 0 hello
- 1 78
2 你好
3 good
enumerate()[枚举]函数用于一个可遍历的数据对象 (如列表, 元组或者字符串) 组合为一个索引序列, 同时列出数据与数据下标, 一般使用在 for 循环中
enumerate(obj, [start =0])
obj: 一个可迭代对象
start: 下标起始位置
6. 元组(tuple)
概述:
本质上是一种有序集合, 和列表非常的相似, 列表使 [] 表示, 元组使用 () 表示
特点: 一旦初始化, 就不能发生改变
元组的创建:
格式
元组名 = (元素 1, 元素 2, 元素 3,......)
- # 创建空的元组
- tuple1 = ()
- print(tuple1)
- # 创建带有元素的元组
- tuple2 =(22, 33, 14, 109)
- print(tuple2)
- # 与列表类似, 元组中的元素类型可以不同
- tuple3 = (23,True,"good")
- print(tuple3)
- # 定义只有一个元素的元组
- tuple4 = (1) #这定义的不是元组而是整数 1
- tuple4 = (1,) #定义一个元素的元组定义时必须加一个逗号 ",", 用来消除歧义
元组元素的访问
访问元组中的元素:
格式: 元组名[下标]
- tuple1 = (20, 40, 201, 401)
- print(tuple1[0])
- # 注意使用下标取值的时候, 要注意下标的取值范围, 不要下标越界
- # 获取最后一个元素
- print(tuple1[-1])
修改元组
在元组定义的时候大家都知道元组一旦初始化就不能改变, 但是现在如果我想改变元组怎么办?
元组是不能修改的, 但是列表可以, 元组中的元组的数据类型可以是不同类型的, 因此我们可以通过元组中添加一个列表, 而列表是可以修改的, 进而来 "修改" 我们的元组
- tuple1 = ('hello', 'you',[20, 30])
- # 修改元组
- tuple1[0] = 'hi'
- # 报错, 元组不能修改
- tuple1[2][1] = 'good'
注意: 从表面上看我们的元组确实是改变了, 但其实改变的不是我们的元组, 而是我们 list 的元素, 所谓 tuple 不变是说, tuple 的每个元素的指向永远不变, 一旦它指向了这个 list, 就不能改变指向其他的对象, 但是指向的 list 本身是可变的!
删除元组
元组是不可变的, 但是我们可以使用 del 语句删除整个元组
- tuple1 = ('hello', 'hi')
- del tuple1
- print(tuple1)
- # 此时会报错
元组操作
元组连组合
语法:
元组 1 元组 2
元组 3 = 元组 1 + 元组 2
- tuple1 = (1, 2, 3)
- tuple2 = (4, 5, 6)
- print(tuple1 + tuple2)
- # 结果
- (1, 2, 3, 4, 5, 6)
注意: 元素连接组合并没有改变原来的元组, 而是成了新的元组
元组的重复
语法:
元组 2 = 元组 1 * n
- tuple1 = (1, 2, 3)
- tuple2 = tuple1 * 3
- print(tuple2)
- # 结果
- (1, 2, 3, 1, 2, 3, 1, 2, 3)
判断元素是否在元组中
语法:
元素 in 元组
若存在则返回 True, 否则返回 False
- tuple1 = (1, 2, 3)
- print( 1 in tuple1)
- # 结果
- True
- tuple1 = (1, 2, 3)
- print( 5 in tuple1)
- # 结果
- False
元组的截取
语法:
元组名[start:end]
截取范围[start,end)
功能: 获取开始下标到结束下标之前的所有元素.
若不指定 start 则默认是从头开始截取到指定位置.
若不指定 end 则默认从指定位置截取到结尾
- tuple1 = (1, 2, 3, 8, 'hello', 'good')
- tuple2 = tuple1[2:5]
- print(tuple2)
- # 结果
- (3, 8, 'hello')
- tuple1 = (1, 2, 3, 8, 'hello', 'good')
- tuple2 = tuple1[:5]
- print(tuple2)
- # 结果
- (1, 2, 3, 8, 'hello')
7. 元组的方法
len(tuple)
功能: 获取元组元素的个数
- tuple1 = (1, 2, 3, 8, 'hello', 'good')
- print(len(tuple1))
- # 结果
- 6
- max(tuple)
功能: 获取元组中元素的最大值
- tuple1 = (1, 2, 3, 8, 20, 13)
- print(max(tuple1))
- # 结果
- 20
- min(tuple)
功能: 获取元组中元素的最大值
- tuple1 = (1, 2, 3, 8, 20, 13)
- print(min(tuple1))
- # 结果
- 1
- tuple(list)
功能: 将列表转换为元组
- list1 = [1, 2, 3, 8, 20, 13]
- print(tuple(list1))
- # 结果
- (1, 2, 3, 8, 20, 13)
1. 使用 for 循环打印图形
'''
*
**
***
****
*****
'''
2. 写一个双色球彩票系统, 系统可以随机产生一组数据, 一组彩票数据有六位数, 这六位数的的取值范围是 0 和 1.
一张彩票是两块钱, 可以设置用户的金额, 用户可以选择继续买票或者是退出. 买票和退出的时候要求打印剩余金额.
用户输入猜测的数据, 若是猜对, 则打印 "恭喜你中大奖了", 若没猜中则打印 "继续加油!".
来源: http://www.bubuko.com/infodetail-2635328.html