python 列表解析

描述

列表解析在一个序列的值上应用一个任意的表达式,将其结果收集到一个新的列表中并返回。从语法上说,列表解析是由方括号封装起来的(为了提醒你它们构造了一个列表)

语法

[expression for target1 in iterable1 [if condition1]

                        target2 in iterable2 [if condition2] ...

                        targetN in iterableN [if conditionN] ]

参数

expression : 运算表达式

target:迭代元素

iterable:迭代器对象

condition:条件表达式

返回值

一个列表

示例 

示例1

[x for x in range(5) if x%2==0]

输出的结果为

[0, 2, 4]

示例2

 [(x ,  y)  for  x  in  range(5)  if  x  %  2  ==  0  for  y  in  range(5)  if  y  %  2  ==  1]

输出结果为:

[(0, 1), (0, 3), (2, 1), (2, 3), (4, 1), (4, 3)]

与for的比较

任何一个列表解析都可以转换成for循环,这里测试两者的计算速度

for循环表达式

import time
start = time.time() 
res = []
for  x  in  range(5):
    if  x  %  2  ==  0:
        for  y  in range(5):
           if  y  %  2  ==  1:
               res.append((x ,  y))
end = time.time()
print('Time of use {:.8f}s'.format(end-start))

输出的结果为

Time of use 0.00049996s

列表解析的表达式

import time
start = time.time()
res = [(x ,  y)  for  x  in  range(5)  if  x  %  2  ==  0  for  y  in  range(5)  if  y  %  2  ==  1]
end = time.time()
print('Time of use {:.8f}s'.format(end-start))

输出的结果为

Time of use 0.0000000000s

可以看到,列表解析的速度快很多。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值