python——列表和元组

156 阅读4分钟

列表

可变类型

列表的应用场景

思考:如果⼀个班级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)