每天学点Python之comprehensions

每天学点Python之comprehensions


推导式可以简化对数据的处理,让代码简洁的同时还具有很高的可读性,这在Python中非常常见。

列表推导式

通过列表推导式可以对列表中的所有元素都进行统一的操作来获得一个全新的列表(原列表不发生变化),形式如[处理方式 for 元素 in 列表],其中的处理方式可以是任何操作:

>>> a=[1,2,3,4]
>>> [i*2 for i in a]
[2, 4, 6, 8]
>>> a
[1, 2, 3, 4]
>>> [(i*2,i+10) for i in a]
[(2, 11), (4, 12), (6, 13), (8, 14)]

可以通过加上if语句来过滤掉原列表中的一些元素:

>>> a=[1,2,3,4]
>>> [i*2 for i in a if i>2]
[6, 8]

字典推导式

我们可以通过推导式来创建一个字典,不过字典推导式的括号是花括号:

>>> a
[1, 2, 3, 4]
>>> { "str"+str(i):i for i in a }
{'str3': 3, 'str1': 1, 'str4': 4, 'str2': 2}

运用字典推导式有一个妙用,就是可以调换键和值的位置:

>>> a={'one':1,"two":2,"three":3}
>>> {value:key for key,value in a.items()}
{1: 'one', 2: 'two', 3: 'three'}

注:确保值也是不可变类型,例如字符串、元组等

集合推导式

集合推导式与字典推导式类似,不过只有一个值而不是键值对:

>>> a={1,2,3,4,5}
>>> {i**2 for i in a if i%2==1}
{1, 9, 25}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python语法糖是指在Python编程语言中为了让代码更易读、更简洁而提供的一些语法特性。这些语法糖并不影响语言的功能,只是提供了更方便的写法。 下面是一些常见的Python语法糖: 1. 列表推导(List Comprehensions):它允许我们用一行代码创建一个新的列表,可以通过对一个已有的列表进行迭代和筛选来实现。 例如,我们可以使用列表推导来创建一个包含1到10之间所有偶数的列表: ```python even_numbers = [x for x in range(1, 11) if x % 2 == 0] ``` 2. 字典推导(Dictionary Comprehensions):与列表推导类似,但是创建的是一个字典。 例如,我们可以使用字典推导来创建一个包含1到10之间每个数字的平方作为键值对的字典: ```python squares = {x: x**2 for x in range(1, 11)} ``` 3. 生成器表达(Generator Expressions):它们类似于列表推导,但是返回一个生成器对象,而不是一个列表。这样可以节省内存空间。 例如,我们可以使用生成器表达来计算1到10之间所有偶数的平方和: ```python sum_of_squares = sum(x**2 for x in range(1, 11) if x % 2 == 0) ``` 4. 装饰器(Decorators):装饰器是一种特殊的函数,它可以接受一个函数作为参数,并返回一个新的函数。装饰器可以用来扩展或修改函数的行为,而无需修改原始函数的定义。 例如,我们可以使用装饰器来记录函数的执行时间: ```python import time def timer_decorator(func): def wrapper(*args, **kwargs): start_time = time.time() result = func(*args, **kwargs) end_time = time.time() execution_time = end_time - start_time print(f"Function '{func.__name__}' executed in {execution_time} seconds.") return result return wrapper @timer_decorator def my_function(): # 函数的具体实现 pass my_function() ``` 这些都是Python中常见的语法糖,它们可以使代码更简洁、更易读,提高开发效率。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值