4.推导式

前言

  • 推导式comprehensions(又称解析式),是Python的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列的结构体。 共有三种推导,在Python2和3中都有支持,有下面几种推导式:
    1.列表(list)推导式
    2.字典(dict)推导式
    3.集合(set)推导式

  • 列表推导式常和三目运算符一起搭配使用

常规写法和列表推导式
# 需求1:创建一个0-100的奇数的数字

# 常规写法
list_odd = []
for i in range(101):
    if i % 2 != 0:
        list_odd.append(i)
print(list_odd)

# 1.列表推导式
list_odd_cps = [i for i in range(101) if i % 2 != 0]
print(list_odd_cps)

# 需求2:列表里有元组,元组有2个值,第一个是1-100的奇数,第二个是1-100的偶数

# 常规写法
list_tuple = []
for i in range(1, 101):
    for j in range(1, 101):
        if i % 2 != 0 and j % 2 == 0:
            list_tuple.append((i, j))
print(list_tuple)

# 列表推导式
list_tuple_cps = [(i, j)
                  for i in range(1, 101) if i % 2 != 0
                  for j in range(1, 101) if j % 2 == 0]
print(list_tuple_cps)
常规写法和字典推导式
# 需求1:生成key和value都是同个数值的list

# 常规写法
dict_cps = {}
index = 0
for i in range(10):
    dict_cps[i] = i
print(dict_cps)

# 推导式
dict_cps1 = {i: i
             for i in range(10)}
print(dict_cps1)

# 需求2,有个成绩dict,取出成绩大于80的学生,
# 生成姓名:成绩的字典
grade_dict = {"li": 80, "wang": 79, "lin": 88, "su": 81}
dict_one = {}

# 常规写法
for key, value in grade_dict.items():
    if value > 80:
        dict_one[key] = value
print(dict_one)

# 推导式
dict_one1 = {key: value for key, value in grade_dict.items() if value > 80}
print(dict_one1)

# 需求3,在2的条件上,生成个名字的数组
name_list = [key for key, value in grade_dict.items() if value > 80]
print(name_list)
集合推导式
# 集合推导式:一个元素,大括号
set_one = {x for x in range(10) if x % 2 == 0}
print(type(set_one))  # 
print(set_one)  # {0, 2, 4, 6, 8}

你可能感兴趣的:(4.推导式)