20230410-Python-元组与列表-day7

发布时间 2023-04-11 00:04:39作者: xiao智

元组与列表

4月10

  • 列表的应⽤场景
  • 列表的格式
  • 列表的常⽤操作
  • 列表的循环遍历
  • 列表的嵌套使⽤

  • 元组的应⽤场景
  • 定义元组
  • 元组常⻅操作

列表的应用场景

思考:如果⼀个班级100位学⽣,每个⼈的姓名都要存储到变量,应该如何书写程序?声明100个变量吗?
答:列表即可, 列表⼀次性可以存储多个数据。

列表形式

列表可以一次性存多个数据,且可以为不同类型的数据类型

li1 = ["123", "王五", "李四"]
列表的常用操作

列表的作用是一次性存储多个数据,可以对这些数据进行 , , , 操作

查询

根据小标查询

li1 = ["123", "王五", "李四"]

print(li1[0])
print(li1[1])
print(li1[2])

函数

  • index():返回指定数据所在位置的下标

语法

# 列表序列.index(数据, 开始位置下标, 结束位置下标)

li1 = ["张三", "李四", "王五", "张三"]
print(li1.index("张三", 1, 4))
  • count(): 统计指定数据在当前列表中出现的次数
li1 = ["张三", "李四", "王五", "张三"]

print(li1.count("张三")
  • len(): 访问列表长度,即列表中数据的个数
li1 = ["张三", "李四", "王五", "张三"]

print(len(li1))
  • in 与 not in

in:判断指定数据在某个列表中,存在则返回Ture,不在返回Fulse

not in:判断指定数据在某个列表中,存在着为Fulse,不在返回Ture

li1 = ["张三", "李四", "王五", "张三"]

name = input("请输入你要找的人:")
if name in li1:
    print("{}他在这里".format(name))
else:
    print(f"{name}他不在")
增加

作用:增加指定数据到列表中

函数

  • append():列表结尾追加数据
# 列表序列.append(数据)
li1 = ["张三", "李四", "王五"]

li1.append("yuwen")
print(li1)

#输出结果
['张三', '李四', '王五', 'yuwen']

如果appand(),追加的数据是一个序列,则追加整哥序列到列表中

li1 = ["张三", "李四", "王五"]
li2=["篮球","足球","乒乓"]
li1.append(li2)
print(li1)

#输出结果
['张三', '李四', '王五', ['篮球', '足球', '乒乓']]
li1 = ["张三", "李四", "王五"]

print(id(li1))
li1.append("yuwen")
print(li1,id(li1))

#输出结果
2192101762560
['张三', '李四', '王五', 'yuwen'] 2192101762560
# 列表是可变的
# 修改之后,内存地址如果不变,那他就是
  • extend():

列表尾部追加数据,如果数据是一个序列,则将这个序列数据逐一添加列表

li1 = ["张三", "李四", "王五"]

li1.extend("yuwen")
print(li1)

#输出结果
['张三', '李四', '王五', 'y', 'u', 'w', 'e', 'n']

如果添加的一个序列,则序列会将序列里每一个元素添加进去

li1 = ["张三", "李四", "王五"]
li2 = ["篮球", "足球", "乒乓"]

li1.extend(li2)
print(li1)

#输出结果
['张三', '李四', '王五', '篮球', '足球', '乒乓']
  • insert():指定位置插入数据

语法:

li1 = ["张三", "李四", "王五"]

li1.insert(2,"yuwen")
print(li1)

#输出结果
['张三', '李四', 'yuwen', '王五']
删除

输出列表中的数据

  • del:

删除整个列表

#del 数据列表
li1 = ["张三", "李四", "王五"]

del li1
print(li1)

#输出结果
NameError: name 'li1' is not defined

删除指定数据(根据索引删除)

li1 = ["张三", "李四", "王五"]

del li1[1]
print(li1)

#输出结果
['张三', '王五']
  • pop():删除指定下标(默认是最后一个),并返回该删除后的结果
li1 = ["张三", "李四", "王五", "赵六"]

li1.pop()
print(li1)

li1.pop(0)
print(li1)

#输出结果
['张三', '李四', '王五']
['李四', '王五']
  • remove():删除列表中第一个匹配项
li1 = ["张三", "李四", "王五", "张三"]

li1.remove("张三")
print(li1)

#输出结果
['李四', '王五', '张三']
  • clear():清除列表
li1 = ["张三", "李四", "王五", "张三"]

li1.clear()
print(li1)

#输出结果
[]
修改

修改指定下标数据

直接修改

li1 = ["张三", "李四", "王五", "张三"]
li1[0] = "yuwen"
print(li1)

#输出结果
['yuwen', '李四', '王五', '张三']
  • reverse():逆置
li1 = ["张三", "李四", "王五", "12312", "abc"]
li1.reverse()
print(li1)

#输出结果
['abc', '12312', '王五', '李四', '张三']
  • sort()

排序

语法

reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)

# 列表序列.sort(reverse=False)
li = [2,3,5,6,1,4,8]
li.sort(reverse=False)
print(li)
# [1, 2, 3, 4, 5, 6, 8]

li.sort(reverse=True)
print(li)
# [8, 6, 5, 4, 3, 2, 1]
复制
  • copy()

复制一个列表

name_list = ['张三', '李四', '王五','赵六']
name_li2 = name_list.copy()
print(name_li2)
# ['张三', '李四', '王五','赵六']
列表的循环遍历

依次打印列表中的各个数据

for循环

name_list = ['张三', '李四', '王五','赵六']
for i in name_list:
    print(i)

while循环

i = 0
name_list = ['Tom', 'Lily', 'Rose']
while i < len(name_list):
    print(name_list[i])
    i += 1
列表的嵌套

所谓列表嵌套指的就是⼀个列表⾥⾯包含了其他的⼦列表

# 找到篮球
name_list = [['张三', '李四', '阿坤'], ['唱', '跳', '篮球'], ['甲', '乙', '丙']]
# 第⼀步:按下标查找到篮球所在的列表
print(name_list[1])
# 第⼆步:从李四所在的列表⾥⾯,再按下标找到数据李四
print(name_list[1][2])

元组

思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?

定义元组

定义元组使⽤⼩括号,且逗号隔开各个数据,数据可以是不同的数据类型。

# 多个数据元组
t1 = (10, 20, 30)

# 单个数据元组
t2 = (10,)

注意:如果定义的元组只有⼀个数据,那么这个数据后⾯也好添加逗号,否则数据类型为唯⼀的这个数据的数据类型

元组的常⻅操作

元组数据不⽀持修改,只⽀持查找,具体如下

  • 根据下标查找
tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1[0])
  • index():

查找某个数据,如果数据存在返回对应的下标,否则报错,语法和列表、字符串的index⽅法相同。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.index('aa'))
  • count():

统计某个数据在当前元组出现的次数。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(tuple1.count('bb'))
  • len():

统计元组中数据的个数。

tuple1 = ('aa', 'bb', 'cc', 'bb')
print(len(tuple1))

元组内的直接数据如果修改则⽴即报错

但是如果元组⾥⾯有列表,修改列表⾥⾯的数据则是⽀持的。

tuple2 = (10, 20, ['aa', 'bb', 'cc'], 50, 30)
print(tuple2[2]) # 访问到列表
# ['aa', 'bb', 'cc']
tuple2[2][0] = 'aaaaa'
print(tuple2)
# (10, 20, ['aaaaa', 'bb', 'cc'], 50, 30)