python中的推导式

2020-09-04 15:55:00
六月
来源:
https://blog.csdn.net/weixin_43790276/article/details/90247423
转贴 688

一、range()函数

python的range()函数可用来创建一个整数列表,一般用在 for 循环中。

range()语法:range(start, stop[, step])

二、列表推导式

列表推导式(list comprehension)是指循环创建列表。

  语法规范:

   out_list = [out_express for out_express in input_list if out_express_condition]

for循环有非常广的应用场景,也可以用来创建一个列表,而列表推导式相当于for循环创建列表的简化版。

list_e = [(e, f * f) for e in range(3) for f in range(5, 15, 5)]

list1 = [x*y for x in range(1,5) if x > 2 for y in range(1,4) if y < 3]

看一个矩阵例子: 

matrix = [
    [1, 2, 3],
    [4, 5, 6],
    [7, 8, 9],
]
flattened = []
for row in matrix:
    for i in row:
        flattened.append(i)

1、我们用列表推导式实现该功能(把一个矩阵(以列表为元素的列表)展平为一个列表):  

 flattened = [i for row in matrix for i in row]     

下面的推导式语法 错误 row未定义:flat = [i for i in row for row in matrix] 

2、使用列表推导式实现矩阵转置:  trans = [[row[i] for row in matrix] for i in range(3)] 

3、生成10个随机数: import random       

array = [random.randint(1, 100) for i in range(10)]4、year, month, day = [int(x) for x in input('input year/month/day: ').split('/')]

三、字典推导式

list_phone = [('HUAWEI', '华为'), ('MI', '小米'), ('OPPO', 'OPPO'), ('VIVO', 'VIVO')]

dict_c = {key: value for key, value in list_phone}

print(dict_c)

四、集合推导式

set_a = {value for value in '有人云淡风轻,有人负重前行'}

集合是无序且不重复的,所以会自动去掉重复的元素,并且每次运行显示的顺序不一样。

从上面的代码中可以总结:

集合推导式就是将列表推导式的[]换成{},字典推导式就是推导出两个值并构建成键值对的样子。

另外,不管是字典推导式还是集合推导式,后面都可以像列表推导式一样接if条件语句,嵌套循环等,具体可以根据您自己的需求来使用。

参考: https://www.cnblogs.com/amiza/p/10159293.html

https://blog.csdn.net/lexi3555/article/details/80633441

发表评论
评论通过审核后显示。