Python中的列表推导和生成器表达式的使用

列表推导是Python语言中用来构建列表的一种快捷便利的方式,而生成器表达式可以用来构建其他类型的序列。它们的使用,可以使代码更具有可读性和更有效率。

举一个例子,将一个字符串的元素转化为新的列表。

第一种方法,使用for循环:


>>> string='hello,
>>> new_list=[]

>>> for s in string:
...     new_list.append(s)
...
>>> new_list
['h', 'e', 'l', 'l', 'o', ',', 'p', 'y', 't', 'h', 'o', 'n']


第二种方式,使用列表推导:

>>> string='hello,python'
>>> new_list=[s for s in string]
>>> new_list
['h', 'e', 'l', 'l', 'o', ',', 'p', 'y', 't', 'h', 'o', 'n']


以上两种构建列表的方式,哪一种更简单,更具可读性已经一目了然。

不过,虽然列表推导如此简捷,但也不可以被滥用。一般而言,当列表推导的代码过长时(代码超过两行),就破坏了其简短可读的原则。此时,并不适合使用列表推导。


虽然也可以用列表推导来构建元组等其他序列,但生成器表达式却是更好的选择。这是因为生成器表达式遵循了迭代器协议,能逐个的产生元素,而不是一次性构建整个序列。这显然要比列表推导节省内存。


生成器表达式的语法和列表推导差不多。如下:

>>> string='hello,python'
>>> tuple(s for s in string)
('h', 'e', 'l', 'l', 'o', ',', 'p', 'y', 't', 'h', 'o', 'n')






  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值