python——双重列表推导式+函数,优雅而强大
来源:互联网 发布:淘宝卖家更换支付宝 编辑:程序博客网 时间:2024/06/08 04:21
看书的过程中,看到了这种精妙(书里译文如此)的用法。
使用场景如下:
列表ls:
ls = [('x',['open1','open1','open1']),('y',['open1','open1','open0']),('z',['open0','open0','open1'])]
我们定义了一个列表,里面的元素是元祖,元祖里还有列表。
假设x,y,z是三串钥匙,对应三扇门,open1代表能打开,open0代表不能打开。我们要找出三扇门都能打开的那把钥匙,怎么解决?
使用列表推导式,非常容易,代码如下:
def find(con): return [j for i in con for j in i if j.isdigit()][w for w,con in ls if find(con)==['1','1','1']]结果是['x']。
自定义了一个函数find(),在内含条件的列表推导式中被调用,函数内部还有一个双层嵌套循环。
先看[w for w,con in ls],之前的帖子中介绍过列表推导式的用法,这里简单给一个小例子:[val+1 for val in [1,2,3]],结果是[2,3,4],所以for w,con in ls就是循环列表ls,w代表里面元祖的第一个元素,con是第二个元素,随后对每个con调用函数find。con传进find后,[j for i in con for j in i if j.isdigit()],先循环con,相当于取到了每一把钥匙,然后再循环每一把钥匙,isdigit()函数会判断是不是数字,是数字的就会被取出。所以结果就出来了。
阅读全文
0 0
- python——双重列表推导式+函数,优雅而强大
- python强大的列表推导式
- python 列表推导式
- python列表推导式
- python 列表推导式
- Python列表推导式
- python 列表推导式
- python 列表推导式
- python列表推导式
- python列表推导式
- python列表推导式
- Python列表推导式——轻量级循环
- 【python系列】列表推导式
- python之列表推导式
- Python的列表推导式
- Python之列表推导式
- Python的列表推导式
- Python的列表推导式
- JAVA编程思想读书笔记——什么是对象(一)
- ActiveX com插件在某些电脑安装不上问题 gpsvc.dll ieshims.dll
- List使用注意点
- Java中的static关键字
- 吐血中, 调用分享到微信好友,加载的网络图片显示不出来,微信分享,自定义分享标题、内容描述关键词限制(红包)
- python——双重列表推导式+函数,优雅而强大
- iOS中的静态库与动态库,区别、制作和使用
- MFC-在Picture控件中画橡皮筋线
- 移动web性能测试要点
- iPhone开发技巧之调试篇(3)— 程序Crash后的调试技巧
- Java集合框架详解(一)——初步认识集合框架
- 仿映客吐司形式
- 利用redis实现收藏或者点赞数量的累加
- es6与es5 中this的区别