python 列表推导式、lambda表达式、 ?表达式 sorted

本文深入探讨了Python编程中的核心技巧,包括列表推导式的高效使用、lambda表达式的灵活应用、条件表达式的简洁写法以及sorted函数的高级操作。通过具体实例,详细解析了这些技巧如何提升代码的可读性和执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Explicit is better than implicit(明了胜于晦涩),就是说那种方式更清晰就用哪一种方式,不要盲目的都使用表达式。

1. 列表推导式:

例一:

multiples = [i for i in range(30) if i % 3 is 0]
print(multiples)
# Output: [0, 3, 6, 9, 12, 15, 18, 21, 24, 27]
def squared(x):
    return x*x
multiples = [squared(i) for i in range(30) if i % 3 is 0]
print multiples
#  Output: [0, 9, 36, 81, 144, 225, 324, 441, 576, 729]

2. lambda表达式:


add = lambda x, y : x+y
add(1,2)  # 结果为3

 

def get_y(a,b):
     return lambda x:ax+b
y1 = get_y(1,1)
y1(1) # 结果为2
# 需求:将列表中的元素按照绝对值大小进行升序排列
list1 = [3,5,-4,-1,0,-2,-6]
sorted(list1, key=lambda x: abs(x))

当然,也可以如下:

list1 = [3,5,-4,-1,0,-2,-6]
def get_abs(x):
    return abs(x)
sorted(list1,key=get_abs)

只不过这种方式的代码看起来不够Pythonic

3. ?表达式

(1) variable = a if exper else b
(2) variable = (exper and [b] or [c])[0]
(3) variable = exper and b or c

上面三种用法都可以达到目的,类似C语言中 variable = exper ? b : c;即:如果exper表达式的值为true则variable = b,否则,variable = c

例如:

a, b = 1, 2
max = a if a > b else b
max2 = (a > b and [a] or [b])[0]  # list
max3 = a > b and a or b
print max,max2,max3

4. sorted

list1 = [3,5,-4,-1,0,-2,-6]
def get_abs(x):
    return abs(x)
a=sorted(list1,key=get_abs)
print list1,a

 

dica = {"a":2,"c":8,"d":6}
dicb = sorted(dica.items(),key=lambda x:x[0])
print dicb
print sorted(dica.keys())
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小金子的夏天

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值