列表和下标
- 列表(list)是 python 中最基本的数据结构
- 列表中可以包含 任意多个数据元素
- 列表中可以包含 任意类 型的数据元素
- 列表用 中括号 [ ] 定义,用 ‘ , ’ 分隔
- 列表中的下标从 0 开始,可以使用下标获取元素
- 列表也可以使用负数下标,-1 代表最后一个元素
- 可以使用 [ start : end : step ] 对列表进行截取
- 字符串是不可变数据类型,列表是可变数据类型
# 创建列表
a = [] # 空列表
b = [1,3.14,'H',False,4,5.6]
# 显示类型
print(type(b))
# 下标读取
print(b[0])
print(b[-1])
# 列表可以修改内容
b[0] = 'Hi'
print(b)
# 截取
print(b[1:4])
print(b[1::2])
print(b[::-1])
## output ##
# 1
# 5.6
# ['Hi', 3.14, 'H', False, 4, 5.6]
# [3.14, 'H', False]
# [3.14, False, 5.6]
# [5.6, 4, False, 'H', 3.14, 'Hi']
列表简单使用
- 使用 in 或 not in 判断列表是否包含某个元素
- 使用 len() 函数获取列表中的元素个数
- 使用 + 拼接两个列表
- 使用 * 重复某个列表
- 使用 reverse() 反序某个列表 my_list.reverse()
- 使用 max() 获取列表中最大的元素,列表中元素必须是同一类型(数值、字符串)
- 使用 min() 获取列表中最小的元素,列表中元素必须是同一类型(数值、字符串)
- 使用 sort() 从小到大排序某个列表,列表中元素必须是同一类型(数值、字符串) my_list.sort()
- 方法:a.sort(),a.reverse()
- 函数:len(a),min(a),max(a)
# 创建列表
a = [1,2,3,4] # 空列表
## in 和 not in ##
find_number = input('Input the number that you want to find:')
find_number = int(find_number)
if find_number in a:
print(f'{find_number} is in list a.')
else:
print(f'{find_number} is not in list a.')
## len() ##
print(len(a))
print(f'The subscript of the last number in this list is {len(a)-1}')
## 拼接 ##
b = ['a','b','c','d']
print(a + b)
## 重复 ##
print(a * 3)
## 反序 ##
# 方法 1:a 本身不变
a_reverse = a[::-1]
print(f'a_reverse = {a_reverse},a = {a}')
# 方法 2:a 本身有变化
a.reverse()
print(f'a = {a}')
## 最值 ##
a = a + [5,6,7,8]
max_value = max(a)
min_value = min(a)
print(f'The maximum value = {max_value}\nThe minimum value = {min_value}')
## 排序 ##
a = [1,3,5,2,7,9,0]
a.sort()
print(a)
## output ##
# Input the number that you want to find:5
# 5 is not in list a.
# 4
# The subscript of the last number in this list is 3
# [1, 2, 3, 4, 'a', 'b', 'c', 'd']
# [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
# a_reverse = [4, 3, 2, 1],a = [1, 2, 3, 4]
# a = [4, 3, 2, 1]
# The maximum value = 8
# The minimum value = 1
# [0, 1, 2, 3, 5, 7, 9]
修改查找元素
- 对列表的主要操作是 增删改查
- 对元素直接赋值进行修改
- 使用下标查找元素内容
- 查找制定内容首次出现的下标 my_list.index()
- 查找指定内容出现的次数 my_list.count()
a = [1,2,3,4,5,6]
a[1] = 5
print(a)
# 修改某个值
value = a[1]
print(value)
# 查找某个值
print(a.index(5))
# 通过元素内容,查找它在列表中首次出现的位置
print(a.count(5))
# 通过元素内容,查找它在列表中出现的次数
b = ['周一','周二','周三','周四','周六','周五','周日']
b[4],b[5] = b[5],b[4]
print(b)
# 交换列表中元素的位置
s = '周一,周二,周三,周四,周五,周六,周日'
string = s.split(',')
print(string)
s2 = '*'.join(string) # string 中必须全部都是字符串类型
print(s2)
### output ###
# [1, 5, 3, 4, 5, 6]
# 5
# 1
# 2
# ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
# ['周一', '周二', '周三', '周四', '周五', '周六', '周日']
# 周一*周二*周三*周四*周五*周六*周日
增加元素
- 向列表末尾添加新元素 my_list.append(5)
- 向指定位置(1)插入指定元素(Hi) my_list.insert(1,'Hi')
- 在列表末尾追加多个元素 my_list.extend([5,6,7])
a = [1,2,3,4]
a.append(5)
print(a)
# [1, 2, 3, 4, 5]
b = [1,2,3,4]
b.insert(2,2.5)
print(b)
# [1, 2, 2.5, 3, 4]
b.insert(100,5)
print(b)
# [1, 2, 2.5, 3, 4, 5]
b.insert(-2,9) # 先将负数位置的正数坐标求出来,再放置到正数的位置
print(b)
# [1, 2, 2.5, 3, 9, 4, 5]
c = [1,2,3,4]
c.extend([5,6,7])
print(c)
# [1, 2, 3, 4, 5, 6, 7]
c_plus = [9,10]
c.extend(c_plus)
print(c)
# [1, 2, 3, 4, 5, 6, 7, 9, 10]
s = 'Hello'
c.extend(s)
print(c)
# [1, 2, 3, 4, 5, 6, 7, 9, 10, 'H', 'e', 'l', 'l', 'o']
c.extend([s])
print(c)
# [1, 2, 3, 4, 5, 6, 7, 9, 10, 'H', 'e', 'l', 'l', 'o', 'Hello']
删除元素
- 移除最后一个元素 my_list.pop()
- 移除指定下标位置的元素 my_list.pop(2)
- 移除指定下标位置的元素 del my_list[2]
- 移除指定的内容 my_list.remove('b')
- 清空列表 my_list.clear()
a = [1,3,5,7,9]
a.pop()
print(a)
# [1, 3, 5, 7]
value = a.pop() # pop 方法可以知道哪个元素被移除掉了
print(f'value = {value}')
# value = 7
a.pop(2)
print(a)
# [1, 3]
a.pop(-1)
print(a)
# [1]
b = [1,3,5,7,9]
del b[-2] # del 方法不能知道哪个元素被移除掉
print(b)
# [1, 3, 5, 9]
c = [1,3,5,7,3,9]
c.remove(3) # 知道删除的内容,但是不知道下标;有重复的话,只能删除第一个
print(c)
# [1, 5, 7, 3, 9]
d = [1,3,5,7,9]
d.clear()
print(d)
# []
元组
- 列表(list)是一种有序容器,元组(tuple)也是一种有序容器
- 列表用 [ ] 表示,元组用 ( )表示
- 元组也是使用下标进行元素索引,下标从0开始
- 元组也可以截取
- 区别:元组是不可变类型,列表是可变类型
- 元组没有增删改,只能查
- 常用来存放关联性很强的元素 position = (12,10),color = (255,255,255)
- 系统处理元组的速度要比处理列表的速度快
- 元组可以作为字典的 key,列表不可以
a = (1,2,3) # a = 1,2,3
print(type(a))
# <class 'tuple'>
b = (1) # b = 1
print(type(b))
# <class 'int'>
b = (1,) # b = 1,
print(type(b))
# <class 'tuple'>
print(a[2]) # 3
print(a[::-1]) # (3, 2, 1)
print(a + b) # (1, 2, 3, 1)
print(a * 3) # (1, 2, 3, 1, 2, 3, 1, 2, 3)
print(4 in a) # False
print(max(a)) # 3
print(len(a)) # 3
print(a.count(3)) # 1
print(a.index(2)) # 1
t = 1,2,3
a,b,c = t
print(f'a = {a},b = {b},c = {c},t = {t}')
# a = 1,b = 2,c = 3,t = (1, 2, 3)
列表嵌套
- 列表中可以存放任意类型的元素,可以是列表类型
- 列表嵌套也叫二维列表
- 获取元素 my_list[1][0]
stu1 = ['小明',95]
stu2 = ['小红',86]
stu3 = ['小王',68]
students = [stu1,stu2,stu3]
# students = [['小明',95],['小红',86],['小王',68]]
# students = [
# ['小明',95],
# ['小红',86],
# ['小王',68]
# ]
print(students)
# [['小明', 95], ['小红', 86], ['小王', 68]]
print(f'{students[0][0]}的分数:{students[0][1]}')
# 小明的分数:95
列表练习
例 1. 创建一个有 10 个元素的列表
- 值是 [30,31,30,31,30,31,30,31,30,31]
- 将下标为 0 的元素删除
- 将下标为 1 的元素值改为 28
- 在下标为 7 的位置插入一个元素 31
- 在列表末尾追加 2 个元素:30,31
### 创建和修改列表 ###
# 1. 创建一个列表
my_list = [30,31] * 5
# 2. 将下标为 0 的元素删除
del my_list[0]
print(my_list)
# 3. 将下标为 1 的元素值改为 28
my_list[1] = 28
print(my_list)
# 4. 在下标为 7 的位置插入一个元素 31
my_list.insert(7,31)
print(my_list)
# 5. 在列表末尾追加 2 个元素:30,31
my_list.extend([30,31])
print(my_list)
# 6. output
# [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]
例 2. 提示用户输入一个 1 - 12 之间的整数数值表示月份,然后在控制台显示用户输入的这个月份有多少天
# 1. 提示用户输入一个 1-12 之间的整数月份
month = input('请输入一个月份:')
# 2. 判断用户输入的月份有多少天
day = 0
if month:
month = int(month)
if 1 <= month <= 12:
if month in (1,3,5,7,8,10,12):
day = 31
print(f'{month}月份有{day}天')
elif month == 2:
print(f'2月份有28天(平年)或者29天(闰年)')
else:
day = 30
print(f'{month}月份有{day}天')
else:
print('输入错误!请输入1-12之间的整数!')
else:
print('错误!!!没有检测到输入!!!')