列表
可变类型
列表的应用场景
思考:如果⼀个班级100位学生,每个⼈的姓名都要存储到变量,应该如何书写程序?声明100个变量吗?
答:列表即可, 列表⼀次性可以存储多个数据。
列表的格式
list1 = [1, 2, 3, "张三", "李四"]
# 空列表创建
list2 = []
列表可以⼀次性存储多个数据,且可以为不同数据类型
列表的常规操作
查找
直接查找
# 索引查找
names = ["张三", '李四', '王五', '赵六']
print(names[0])
print(names[3])
print(names[-1])
函数查找
# index():返回元素的下表
# 列表序列.index(数据, 开始位置下标, 结束位置下标)
print(names.index("王五"))
print(names.index('张三', 0, 2))
# count():统计元素在列表出现的次数
list3 = [1, 21, 1, 1, 3, 4, 5, "张三", '李四', '张三']
print(list3.count(1))
print(list3.count("张三"))
# len():返回列表长度,即元素的个数
print(len(list3))
#in与not in
in:判断指定数据在某个列表序列,如果在返回True,否则返回False
not in:判断指定数据不在某个列表序列,如果不再返回True,否则返回False
#例:
names = ["张三", '李四', '王五', '赵六']
name = input("请输入名字:")
if name in names:
print(f"你输入的名字是{name},名字在列表中")
else:
print(f"你输入的名字是{name},名字不在列表中")
添加
作⽤:增加指定数据到列表中。
函数
append():列表结尾处添加数据
names = ["张三", '李四', '王五', '赵六']
names.append("坤哥")
print(names)
如果append()追加的数据是⼀个序列,则追加整个序列到列表
list4 = ["坤哥", "只因"]
names.append(list4)
print(names)
>>>['张三', '李四', '王五', '赵六', '坤哥', ['坤哥', '只因']]
extend():列表结尾追加数据,如果数据是⼀个序列,则将这个序列的数据逐⼀添加到列表。
list6 = ["张三", '李四', '王五']
names = ["张三", '李四', '王五', '赵六']
names.extend(list6)
print(names)
>>>['张三', '李四', '王五', '赵六', '张三', '李四', '王五']
字符串的extend()运用
var1 = "12345"
names.extend(var1)
print(names)
>>>['张三', '李四', '王五', '赵六', '张三', '李四', '王五', '1', '2', '3', '4', '5']
insert():指定位置新增数据。
names = ["张三", '李四', '王五', '赵六']
names.insert(2, "Ikuo") # 在索引为 2 的位置添加元素,后面的元素往后移一位
print(names)
删除
# del
# ①删除整个列表
list7 = [1, 2.3, 3, "张三"]
# del list7
# print(list7) # >>>报错
# ②删除指定数据(根据索引删除)
del list7[-1]
print(list7)
# pop():**删除指定下标的数据(默认为最后⼀个),并返回该数据。**
var = list7.pop()
print(var)
print(list7)
# remove():删除指定元素
list7.remove(1)
print(list7)
# clear():清空列表
list7.clear()
print(list7) # >>>空列表 []
修改
# 修改指定下标数据
# 直接修改:通过索引修改元素
list8 = [1, 2, 3, "张三", "李四", "王五"]
list8[1] = "坤哥"
print(list8)
# reverse():倒着打印
list8.reverse()
print(list8)
# sort():排序,默认从小到大排序
# reverse表示排序规则,reverse = True 降序, reverse = False 升序(默认)
list9 = [1, 9, 34, 35, 15, 16, 6, 27, 8, 9]
list9.sort()
print(list9)
# sort(reverse=True):从大到小排序
list9.sort(reverse=True)
print(list9)
# 复制
# copy()
list10 = [1, 2, 3, "张三", "李四"]
list10_1 = list10.copy()
print(list10_1)
列表的遍历
# for循环遍历
list11 = [1, 2, 3, "张三", "李四"]
for data in list11:
print(data)
# while 循环遍历
number = 0
while number < len(list11):
print(list11[number])
number += 1
列表的嵌套
# 找到篮球
name_list = [['张三', '李四', '阿坤'], ['唱', '跳', '篮球'], ['甲', '乙', '丙']]
print(name_list[1])
>>>结果:['唱', '跳', '篮球']
name = ['唱', '跳', '篮球']
print(name[2]) # >>结果:篮球
print(name_list[1][2]) # >>结果:篮球
元组
不可变类型
元组的应用场景
思考:如果想要存储多个数据,但是这些数据是不能修改的数据,怎么做?
答:使用元组进行操作
定义元组
定义元组使⽤⼩括号,且逗号隔开各个数据,数据可以是不同的数据类型
创建单个元素的元组时,元素后面加上“ , ”
tup1 = () # 创建空元祖
tup = (1,)
tup2 = (1, 2, 3)
print(tup1)
print(tup)
print(tup2)
元组的常用操作
注:元组数据不⽀持修改,只⽀持查找
查找
# 直接查找:通过索引值进行查找
tup3 = (1, 2, 3, 4)
print(tup3[0])
print(tup3[2])
print(tup3[-1])
# index():用法和列表相同,返回元素索引值,如果没有,报错
print(tup3.index(1))
# count():统计元素出现的次数
tup4 = (1, 1, 1, 2, 2, 2, 2, 5, 6, 7)
print(tup4.count(1))
print(tup4.count(2))
# len():返回元组的长度
print(len(tup4))
元组内的直接数据如果修改则⽴即报错, 但是如果元组⾥⾯有列表,修改列表⾥⾯的数据则是⽀持的。
up5 = (10, 20, ['aa', 'bb', 'cc'], 50, 30)
print(tup5)
print(tup5[2])
tup5[2][1] = "Ikun"
print(tup5)
元组的遍历 :和遍历列表相同
# for循环遍历
tup6 = (1,2,5,"Ikun","你干嘛")
for data in tup6:
print(data)
# while 循环遍历
number = 0
while number < len(tup6):
print(tup6[number])
number += 1
练习
#有一个列表li1 =
["张三", "王五","坤哥","李四", "赵六", "坤哥","王五","坤哥","张三","坤哥"],
#将列表重复的数据删除,保留一个,不可以使用集合
list1 = ["张三", "王五","坤哥","李四", "赵六", "坤哥","王五","坤哥","张三","坤哥"]
list2 = []
for data in list1:
if data not in list2:
list2.append(data)
print(list2)