一、列表推导式
(1)条件推导式
value1: 如果条件表达式condition成立,返回value1 ; 如果条件表达式不成立,返回value2 ;
condition:条件表达式
Value2: 如果条件表达式condition成立,返回value1 ; 如果条件表达式不成立,返回value2 ;
value1 if condition else Value2
如,判断一个数是偶数还是奇数。
x = 10
if x%2 == 0:
print("x是偶数")
else:
print("x是奇数")
使用推导式:
print("x是偶数") if x%2 == 0 else print("x是奇数")
(2)列表推导式
列表推导式是条件推导式和循环一起配合使用,并返回一个列表。
语法一:
exp1:在for循环中,如果x的值满足条件表达式condition(即条件表达式成立),返回exp1;条件表达式不成立则不返回
x:for循环中变量
data:一个序列(比如:列表/元组/字符串等)
condition:条件表达式
[exp1 for x in data if condition]
例子:获取0~20的所有偶数并且乘以10,并返回所有计算之后的结果
[x*10 for x in range(0,21) if x%2==0]
输出:[0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200]
语法二:
exp1:在for循环中,如果x的值满足条件表达式condition(即条件表达式成立),返回exp1;条件表达式不成立则返回exp2
condition:条件表达式
exp2:在for循环中,如果x的值满足条件表达式condition(即条件表达式成立),返回exp1;条件表达式不成立则返回exp2
x:for循环中变量
data:个序列(比如:列表/元组/字符串等)
[exp1 if condition else exp2 for x in data]
例子:将0~20的偶数乘以10,奇数乘以100,并返回所有计算之后的结果。
[x*10 if x%2==0 else x*100 for x in range(0,21)]
输出:[0, 100, 20, 300, 40, 500, 60, 700, 80, 900, 100, 1100, 120, 1300, 140, 1500, 160, 1700, 180, 1900, 200]
(3)效率对比
使用列表推导式的效率远远高于for循环
例子:添加10000000次数据到列表中
使用列表推导式:
import time
start_time=time.time()
list1 = [x for x in range(0, 10000000)]
end_time=time.time()
print(f"使用列表推导式耗时:{end_time-start_time}秒")
输出:使用列表推导式耗时:0.458773136138916秒
使用普通for循环:
import time
list2=[]
start_time=time.time()
for x in range(0, 10000000):
list2.append(x)
end_time=time.time()
print(f"使用列表推导式耗时:{end_time-start_time}秒")
输出:使用普通for循环耗时:7.412888288497925秒
标签:返回,推导,Python,time,列表,表达式,使用,condition
From: https://www.cnblogs.com/levisl/p/17436899.html