当前位置:主页 > 查看内容

Python简洁优雅的推导式

发布时间:2021-06-24 00:00| 位朋友查看

简介:? Python语言有一种独特的推导式语法相当于语法糖的存在可以帮助你在某些场合写出较为精简酷炫的代码。但没有它也不会有太多影响。Python语言有几种不同类型的推导式。 ? 1. 列表推导式 列表推导式是一种快速生成列表的方式。其形式是用方括号括起来的一段语……
?

Python语言有一种独特的推导式语法,相当于语法糖的存在,可以帮助你在某些场合写出较为精简酷炫的代码。但没有它,也不会有太多影响。Python语言有几种不同类型的推导式。

?

1. 列表推导式

列表推导式是一种快速生成列表的方式。其形式是用方括号括起来的一段语句,如下例子所示:

lis?=?[x?*?x?for?x?in?range(1,?10)]

print(lis)

输出

[1, 4, 9, 16, 25, 36, 49, 64, 81]

列表推导式要这么理解,首先执行for循环,对于每一个x,代入x*x中进行运算,将结果逐一添加到一个新列表内,循环结束,得到最终列表。它相当于下面的代码:

lis?=?[]
for?i?in?range(1,?10):
????lis.append(i*i)
????
print(lis)

输出

[1, 4, 9, 16, 25, 36, 49, 64, 81]

列表推导式为我们提供了一种在一行内实现较为复杂逻辑的生成列表的方法。其核心语法是用中括号[]将生成逻辑封装起来。

列表推导式有多重用法:

  • 增加条件语句

lis = [x?*?x?for?x?in?range(1,?11)?if?x?%?2?==?0]

输出

[4, 16, 36, 64, 100]
  • 多重循环

lis = [a?+?b?for?a?in?'123'?for?b?in?'abc']

输出

['1a',?'1b',?'1c',?'2a',?'2b',?'2c',?'3a',?'3b',?'3c']
  • 更多用法

dic?=?{"name":?"mumu",?"age":?"18"}
a?=?[k+":"+v?for?k,?v?in?dic.items()]
print(a) # ['name:mumu', 'age:18']

2. 字典推导式

dic?=?{x:?x**2?for?x?in?(2,?4,?6)}
print(dic)

print(type(dic))

注意:x: x**2的写法,中间的冒号,表示左边的key右边的value。

输出:

{2: 4, 4: 16, 6: 36}
<class 'dict'>

3. 集合推导式

a?=?{x?for?x?in?'abracadabra'?if?x?not?in?'abc'}
print(a)

print(type(a))

输出:

{'r', 'd'}
<class 'set'>

?

4. 元组推导式?

没有元组推导式。

tup?=?(x?for?x?in?range(9))
print(tup)
print(type(tup))
<generator object <genexpr> at 0x0000013DB865AA40>
<class 'generator'>

要通过类似方法生成元组,需要显式调用元组的类型转换函数tuple(),如下所示:

tup?=?tuple(x?for?x?in?range(9))
print(tup)
print(type(tup))

输出:

(0, 1, 2, 3, 4, 5, 6, 7, 8)
<class 'tuple'>

扩展阅读

这15个短代码,蕴含着丰富的python编程思维

推荐几个适合新人上手的Python项目

给python程序员的方法速查表(手机版)

13道Python3实例练习

Python的常用操作示例

PDF

送书

?

关注「开学」
回复
527163下载?

?

喜欢就奖励一个“????”和“在看”呗~

;原文链接:https://blog.csdn.net/bigzql/article/details/115650370
本站部分内容转载于网络,版权归原作者所有,转载之目的在于传播更多优秀技术内容,如有侵权请联系QQ/微信:153890879删除,谢谢!

推荐图文


随机推荐