Python 基础9 推导式

1  推导式

推导式comprehensions(又称解析式),是python中的一种独有特性。推导式是可以从一个数据序列构建另一个新的数据序列。

推导式包括  列表推导式   字典推导式  集合推导式

(1)列表推导式

列表推导式是利用其他列表创建新列表的一种方式,工作原理类似for循环,即可对得到的元素进行转换或者筛选。

列表推导式的基本格式:

变量名 = [表达式 for 临时变量 in 列表]  或者

变量名 = [表达式 for 临时变量 in 列表  If  条件]  

执行流程:

遍历出列表中的内容给变量,表达式根据变量值进行逻辑运算

遍历出列表中的内容给变量,然后进行判断,符合的值再给表达式。

# 练习 1  将list中每一个元素进行平方后放入到一个新列表中
lst = [1,2,3,4,5,6,7,8]

#第一种方法:普通
new_lst = []
for i in lst:
     num = i**2
     new_lst.append(num)
print(new_lst)

# 第二种方法  推导式
new_lst=[i**2 for i in lst ]
print(new_lst)

# 第三种方法  函数
def square(num):
    return num*num
new_lst = [square(i) for i in lst]
print(new_lst)
练习2 求出lst中的奇数,放到新的列表当中
lst = [1,2,3,4,5,6,7]

普通方法
new_lst = []
for i in lst:
    if i % 2 == 1:
        new_lst.append(i)
print(new_list)

推导式

new_lst = [i for i in lst if i % 2 == 1]
练习3 求列表中所有大于2的偶数进行平方运算
lst = [1,2,3,4,5,6,7,8]

普通方法
new_lst = []
for i in lst:
    if i > 2:
        if i % 2 == 0:
            num = i ** 2
            new_lst.append(num)
print(new_lst)

推导式
new_lst = [i**2 for i in lst if i > 2 if i % 2 == 0 ] 
print(new_lst)
练习4 将一个嵌套列表转换成一个一维列表。
lst = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
转换成:lst2=[1, 2, 3, 4, 5, 6, 7, 8, 9]

普通方法
new_lst = []
for lst1 in lst :
    for i in lst1:
        new_lst.append(i)
print(new_lst)

推导式
new_lst = [i for lst1 in lst for i in lst1]
print(new_lst)

2字典推导式

格式:

变量名 = {..........}

练习1  将字典中的key和value 进行对换。
普通方式:
dic = {'k1':'10','k2':'20'}
new_dic = {}
for key in dic:
    value = dic[key]
    print(value)
    new_dic[value] = key
print(new_dic)

for key,value in dic.items():
    print(key,value)
    new_dic[value] = key
print(new_dic)

推导式
new_dic = {value : key for key,value in dic.items()}
print(new_dic)

3 集合推导式

集合推导式跟列表推导式非常相似,唯一区别在于用{}代替[]  并自己带有去重功能

计算列表中每个值的平方

set1 = {x**2 for x in [1,2,3,-1,-4,5,-2]}
print(set1)

 

你可能感兴趣的:(python,新人学习Python必关注,零基础)