列表推导式
1.列表推导式是为了快速生成一个列表
2.格式1::变量=[生成数据的规则 for 临时变量 in xxx]
每次循环都会创建一个数据
my_list = [i for i in range(5)]
print(my_list) # [0, 1, 2, 3, 4]
my_list1 = ['hello' for i in range(5)]
print(my_list1) # ['hello', 'hello', 'hello', 'hello', 'hello']
my_list2 = [f'num{i}' for i in my_list]
print(my_list2) # ['num0', 'num1', 'num2', 'num3', 'num4']
格式2:变量 = [生成数据的规则 for 临时变量 in xxx if xxx]
每循环一次,并且if条件变量为True,生成一个数据
# i取0~4,如果i能整除2则输出,所以输出num0和num2
my_list2 = [f'num{i}' for i in range(4) if i % 2 == 0]
print(my_list2) # ['num0', 'num2']
格式3:变量 = [生成数据规则 for 临时变量 in xxx for 临时变量2 in xxx]
第二个for循环一次生成一次数据
my_list4 = [(i, j) for i in range(3) for j in range(3)]
print(my_list4) 、
# [(0, 0), (0, 1), (0, 2), (1, 0), (1, 1), (1, 2), (2, 0), (2, 1), (2, 2)]
补充:字典推导式
格式:变量 = {生成字典的规则 for 临时变量 in xxx}
my_dict = {f"name{i}": i for i in range(3)}
print(my_dict) #{'name0': 0, 'name1': 1, 'name2': 2}
字典的key相同修改数据,不存在添加数据
my_dict = {f"name{i}": j for i in range(3) for j in range(3)}
print(my_dict) # {'name0': 2, 'name1': 2, 'name2': 2}
my_dict = {f"name{i}{j}": j for i in range(3) for j in range(3)}
print(my_dict)
# {'name00': 0, 'name01': 1, 'name02': 2, 'name10': 0, 'name11': 1, 'name12': 2, 'name20': 0, 'name21': 1, 'name22': 2}
字典
集合:set 定义使用{},{数据,数据}
1.集合中的数据必须是不可变类型
2.集合是可变类型
3.集合是无序的,不支持下标操作
4.集合中的数据是没有重复的(可做去重使用)
my_set = {1, 3.14, True, 'hello', (1, 2)}
print(my_set, type(my_set)) # {(1, 2), 1, 3.14, 'hello'} <class 'set'>
my_list = [1, 2, 3, 4, 2, 5, 1, 0]
my_list = list(set(my_list))
print(my_list) # [0, 1, 2, 3, 4, 5] 去重
# 集合,列表,元组 三者间可以互相转换
可执行操作:
# 删除
my_set = {1, 3.14, True, 'hello', (1, 2)}
my_set.remove(3.14) # 删除指定数据
print(my_set) # {(1,2),1,'hello'}
my_set.pop() # 随机删除一个数据
print(my_set) # {1,'hello'}
# 添加
my_set = {1, 3.14, True, 'hello', (1, 2)}
my_set.add('bai') # 将数据添加进集合中
print(my_set) # {(1, 2), 1, 'gugo', 3.14, 'hello'}
# 清空集合
my_set = {1, 3.14, True, 'hello', (1, 2)}
my_set.clear() 清空整个集合
print(my_set) # set()