![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/df037fceef95eacf9255d1073e2c1db2.png)
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/425f8c0309bc8da6ed3205c9cf564b4c.png)
列表
列表可以一次性存储多个数据,并且可以是不同的数据类型。元素之间没有任何关联
[数据1,数据2,数据3,数据4......]
name_list = ['Tom', 'Lily', 'Rose']
print(name_list[0])# Tom
print(name_list[1])# Lily
print(name_list[2])# Rose
print(name_list[-1])# Rose
#Python为访问最后一个列表元素提供了一种特殊语法。通过将索引指定为-1,可让Python返回最后一个列表元素
查找函数:
index():返回指定数据所在位置的下标。
name_list = ['Tom', 'Lily', 'Rose']
print(name_list.index('Lily', 0, 2))# 1
# 如果查找的数据不存在就报错
count():统计指定数据在当前列表中出现的次数。
name_list = ['Tom', 'Lily', 'Rose']
print(name_list.count('Lily'))# 1
len():访问列表⻓度,即列表中数据的个数。
name_list = ['Tom', 'Lily', 'Rose']
print(len(name_list))# 3
in:判断指定数据在某个列表序列,如果在返回True,否则返回False
name_list = ['Tom', 'Lily', 'Rose']
#结果:True
print('Lily'in name_list)
#结果:False
print('Lilys'in name_list)
not in:判断指定数据不在某个列表序列,
如果不在返回True,否则返回False
name_list = ['Tom', 'Lily', 'Rose']
#结果:False
print('Lily' not in name_list)
#结果:True
print('Lilys'not in name_list)
增加:
(1)append():列表末尾增加数据。列表追加数据的时候,直接在原列表⾥⾯追加了指定数据,即修改了原列表,故列表为可变类型数据。
列表序列.append(数据)
name_list = ['Tom', 'Lily', 'Rose']
name_list.append('xiaoming')
#结果:['Tom','Lily','Rose', 'xiaoming']
print(name_list)
name_list.append(11,22)
print['Tom', 'Lily', 'Rose',[11,22]]
note:如果append()追加的数据是⼀个序列,则追加整个序列到列表.
可以先创建一个空列表,再使用一系列的append()语句添加元素。下面来创建一个空表,再在其中添加元素
(2)extend():列表结尾追加数据,如果数据是⼀个序列,则将这个序列的数据逐⼀添加到列表。
列表序列.extend(数据)S
(3)insert():指定位置新增数据
列表序列.insert(位置下标,数据)
name_list = ['Tom', 'Lily', 'Rose']
name_list.insert(1, 'xiaoming')
#结果:['Tom','xiaoming', 'Lily', 'Rose']
print(name_list)
删除:
(1)使用del语句删除列表中元素
(2)pop():删除指定下标的数据(如果不指定默认的下标,默认为最后⼀个),并返回该数据。
当使用pop()时,被弹出的元素就不再在列表中。
name_list = ['Tom', 'Lily', 'Rose']
del_name = name_list.pop(1)
#结果:Lily
print(del_name)
#结果:['Tom','Rose']
print(name_list)
(3)根据值去删除元素:remove
(4)清空列表:clear()
修改:修改指定下标数据
排序:
(1)逆置:reverse()
俩次调用reverse()可以回到原来的效果
(2)排序:sort()永久排序
(3)sorted():临时排序:按特定顺序显示列表元素,同时不影响它们在列表中的原始排列顺序。
注意,调用函数sorted()后,列表元素的排列顺序并没有变(见)。如果你要按与字母顺
序相反的顺序显示列表,也可向函数sorted()传递参数reverse=True。
复制:
(1)同时省略起始索引和终止索引([:])。
这让Python创建一个始于第一个元素,终止于最后一个元素的切片,即复制整个列表
(2)=
列表的循环遍历:
name_list=['Tom','Lily','Rose']
i=0
while i<len(name_list);
print(name_list[i])
i+=1
for i in name_list:
print(i)
列表嵌套:
所谓列表嵌套指的就是⼀个列表⾥⾯包含了其他的⼦列表。
应⽤场景:要存储班级⼀、⼆、三三个班级学⽣姓名,且每个班级的学⽣姓名在⼀个列表。
name_list = [['⼩明','⼩红','⼩绿'],['Tom','Lily', 'Rose'],['张三','李四','王']]
需求:随机分配办公室
有三个办公室,8位⽼师,8位⽼师随机分配到3个办公室
#准备数据(8老师+3办公室)
import random
teachers=['A','B','C','D','E','F','G','H']
offices=[[],[],[]]
#分配座位到办公室,取到每个老师到办公室列表中
for name in teachers:
num=random.randint(0,2);
offices[num].append(name)
#检查是否分配成功
for office in offices:
print(f'办公室人数{len(office)},老师名字')
for name in office:
print(name)
元组
列表可以⼀次性存储多个数据,但是列表中的数据允许更改。⼀个元组可以存储多个数据,元组内的数据是不能修改的。
元组特点:定义元组使⽤⼩括号,且逗号隔开各个数据,数据可以是不同的数据类型。如果定义的元组只有⼀个数据,那么这个数据后⾯也好添加逗号,否则数据类型为唯⼀的这个数据的数据类型。
元组数据不⽀持修改,只⽀持查找,但是元组可以用来赋值。
集合
创建集合使⽤{123}或set(),但是如果要创建空集合只能使⽤set(),因为{}⽤来创建空字典。
s1 = {10, 20, 30, 40, 50}
print(s1)
s2 = {10, 30, 20, 10, 30, 40, 30, 50}
print(s2)
s3 = set('abcdefg')
print(s3)
s4 = set()
print(type(s4))# set
s5 = {}
print(type(s5))# dict
1.集合可以去掉重复数据;
2.集合数据是⽆序的,故不⽀持下标;
删除数据:
discard():删除集合中指定数据,如果数据不存在也不会报错
pop():随机删除集合中某个数据,并且返回这个数据
查找数据:
字典
数据顺序发⽣变化,每个数据的下标也会随之变化,如何保证数据顺序变化前后能使⽤同⼀的标准查找数据呢?
答:字典,字典⾥⾯的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不⽀持下标,后期⽆论数据如何变化,只需要按照对应的键的名字查找数据即可。
(1)创建字典的语法:
符号为大括号+数据为键值对形式出现+每个键值对用逗号隔开
#有数据字典
dict1 = {'name':'Tom', 'age':20, 'gender':"男"}
#空字典
dict2 = {}
dict3 = dict()
#⼀般称冒号前⾯的为键(key),简称k;冒号后⾯的为值(value),简称v
增:字典序列[key] =值
如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
删:
查:
(1)key值查找
(2)get()
字典序列.get(key,默认值)
如果当前查找的key不存在
则返回第⼆个参数(默认值),
如果省略第⼆个参数,则返回None
(3)keys
(4)values:
(5)items:
字典的循环遍历:
for key in dict.keys():
for value in dict.values():
for item in dict.items():# 遍历元素
for key,value in dict.items(): #遍历键值对
需要在字典中将一个键关联到多个值时,都可以在字典中嵌套一个列表。
使用while循环来处理列表和字典:
(1)在列表中移动元素(提取用户信息)
# 首先,创建一个待验证用户列表
# 和一个用于存储已验证用户的空列表
unconfirmed_users = ['alice', 'brian', 'candace']
confirmed_users = []
# 验证每个用户,直到没有未验证用户为止
# 将每个经过验证的列表都移到已验证用户列表中
while unconfirmed_users:
current_user = unconfirmed_users.pop()
print("Verifying user: " + current_user.title())
confirmed_users.append(current_user)
# 显示所有已验证的用户
print("\nThe following users have been confirmed:")
for confirmed_user in confirmed_users:
print(confirmed_user.title())
删除包含特定值的所有列表元素:
pets = ['dog', 'cat', 'dog', 'goldfish', 'cat', 'rabbit', 'cat']
print(pets)
while 'cat' in pets:
pets.remove('cat')
print(pets)
使用用户输入来填充字典:
responses = {}
# 设置一个标志,指出调查是否继续
polling_active = True
while polling_active:
# 提示输入被调查者的名字和回答
name = input("\nWhat is your name? ")
response = input("Which mountain would you like to climb someday? ")
# 将答卷存储在字典中
responses[name] = response
# 看看是否还有人要参与调查
repeat = input("Would you like to let another person respond? (yes/ no) ")
if repeat == 'no':
polling_active = False
# 调查结束,显示结果
print("\n--- Poll Results ---")
for name, response in responses.items():
print(name + " would like to climb " + response + ".")
#这个程序首先定义了一个空字典(responses),并设置了一个标志(polling_active),用于指出调查是否继续。只要polling_active为True,Python就运行while循环中的代码。