?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'>
扩展阅读
送书
?
关注「开学」 回复527163下载? |
?
喜欢就奖励一个“????”和“在看”呗~
上篇文章给大家介绍了 Java正则表达式匹配,替换,查找,切割的方法 ,接下来,...
Elasticsearch 是通过 Lucene 的倒排索引技术实现比关系型数据库更快的过滤。特...
工具:Eclipse,Oracle,smartupload.jar;语言:jsp,Java;数据存储:Oracle。...
正则忽略大小写 – RegexOptions.IgnoreCase 例如: 复制代码 代码如下: Str = R...
复制代码 代码如下: % URL="http://news.163.com/special/00011K6L/rss_newstop....
错误描述: 在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报...
本文实例讲述了Laravel框架源码解析之反射的使用。分享给大家供大家参考,具体如...
DELETEFROMTablesWHEREIDNOTIN(SELECTMin(ID)FROMTablesGROUPBYName) Min的话保...
4月11日20:30~22:00通过腾讯会议进行了第二次在线学习讨论我把学习笔记整理一下...
项目中用到的一些特殊字符和图标 html代码 XML/HTML Code 复制内容到剪贴板 div ...