学习列表推导式的目的:快速生成一个列表
列表推导式就是使用一行代码结合for循环快速生成一个列表
列表推导式的语法格式:
[添加临时变量保存的数据到列表 for 临时变量 in 容器类型数据]
# 需求: 利用列表推导式 生成一个1-5数据列表
new_list = [x for x in range(1, 6)]
print(new_list, type(new_list))
#[1, 2, 3, 4, 5] <class 'list'>
# 需求: 利用列表推导式 生成一个1-5数据, 只把奇数放到列表里面
# 当条件满足,该满足条件的这个数据放到新的列表里面
new_list = [y for y in range(1, 6) if y % 2 == 1]
print(new_list, type(new_list))
#[1, 3, 5] <class 'list'>
# 需求: 利用列表推导式,生成多个元组数据
result = [(x, y) for x in range(1, 4) for y in range(2)]
print(result, type(result))
#[(1, 0), (1, 1), (2, 0), (2, 1), (3, 0), (3, 1)] <class 'list'>
# 练习题1: my_str = "abc" => ["aa", "bb", "cc"] 利用列表推导式实现
my_str = "abc"
result = [value * 2 for value in my_str]
print(result)
#['aa', 'bb', 'cc']
# 练习题2: name_tuple = ("张三", "李四", "张飞") => ["张三", "张飞"] 利用列表推导式实现
name_tuple = ("张三", "李四", "张飞")
result = [name for name in name_tuple if name.startswith("张")]
print(result)
#['张三', '张飞']
# 练习题3: my_list = [{"name": "吕布", "age": 18}, {"name": "关羽", "age": 20}]
# => [{"name": "关羽", "age": 20}] 利用列表推导式实现
my_list = [{"name": "吕布", "age": 18}, {"name": "关羽", "age": 20}]
result = [person_dict for person_dict in my_list if person_dict["age"] > 18]
print(result)
#[{'name': '关羽', 'age': 20}]
# 练习:使用列表推导式 把my_tuple = ("张飞", "刘备", "张郃")中姓张的过滤出来
# 比如: ["张飞", "张郃"]
my_tuple = ("张飞", "刘备", "张郃")
result=[value for value in my_tuple if value.startswith("张")]
print(result)
#['张飞', '张郃']
# 练习: 利用列表推导式,生成5个1-10的随机数字,比如: [1, 3, 2, 4, 10]
import random
result=[random.randint(1,11) for value in range(1,6)]
print(result)
#[10, 7, 7, 9, 11]