列表推导式
列表推导式:为了快速生成一个列表。
格式一、
变量 = [生成数据的规则 for 临时变量 in ***] (每次循环创建新的数据)
list1 = [i for i in range(5)]
print(list1)
# [0, 1, 2, 3, 4]
list2 = ['python' for i in range(5)]
print(list2)
# [0, 1, 2, 3, 4]
list3 = [f'num{i}' for i in my_list]
print(list3)
# ['num0', 'num1', 'num2', 'num3', 'num4']
list4 = [i*i for i in range(5)]
print(list4)
# [0, 1, 4, 9, 16]
格式二、
变量 = [生成数据的规则 for 临时变量 in *** if xxx] (每次循环,如果条件为true就生成一个数据)
list1 = [i for i in range(10) if i % 2 == 0]
print(list1)
# [0, 2, 4, 6, 8]
my_list2 = [f'num{i}' for i in my_list if i % 2 == 0]
print(my_list2)
# ['num0', 'num2', 'num4']
格式三、
变量= [ 生成数据的规则 for 临时变量 in xxx for j in xxx]
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 = {key:value for i in range(3)}
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) # 3
# {'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}
——————————来自b站黑马程序员视频——————————————————