测试元组是否仅包含Python的None值
发布时间:2020-12-20 13:04:09 所属栏目:Python 来源:网络整理
导读:我需要找到我的元组是否只包含None值. 我使用这段代码,但我不确定这是好的做法: # coding=utf8def isOnlyNoneValuesTuple(t): """ test if tuple contains only None values """ if not len(tuple(itertools.ifilter(None,t))): return True else: return F
我需要找到我的元组是否只包含None值.
我使用这段代码,但我不确定这是好的做法: # coding=utf8 def isOnlyNoneValuesTuple(t): """ test if tuple contains only None values """ if not len(tuple(itertools.ifilter(None,t))): return True else: return False print isOnlyNoneValuesTuple((None,None,)) print isOnlyNoneValuesTuple((None,"val",)) 你知道其他好的做法来测试它吗? 谢谢你的意见 解决方法return t.count(None) == len(t) 它比使用all更快: >>> setup = 't = [None,None]*100; t[1] = 1' >>> timeit.timeit('all(item is None for item in t)',setup=setup) 0.8577961921691895 >>> timeit.timeit('t.count(None) == len(t)',setup=setup) 0.6855478286743164 并且根据非元素的索引减少所有的速度: >>> setup = 't = [None,None]*100; t[100] = 1' >>> timeit.timeit('all(item is None for item in t)',setup=setup) 8.18800687789917 >>> timeit.timeit('t.count(None) == len(t)',setup=setup) 0.698199987411499 但是大列表的速度更快: >>> setup = 't = [None,None]*10000; t[100] = 1' >>> timeit.timeit('t.count(None) == len(t)',setup=setup) 47.24849891662598 >>> timeit.timeit('all(item is None for item in t)',setup=setup) 8.114514112472534 但并非总是如此: >>> setup = 't = [None,None]*10000; t[1000]=1' >>> timeit.timeit('t.count(None) == len(t)',setup=setup) 47.475088119506836 >>> timeit.timeit('all(item is None for item in t)',setup=setup) 72.77452898025513 结论我为自己做了所有或计数的速度 – 非常依赖于数据.如果你在非常大的列表中拥有所有None的概率 – 不要使用all,那么在这种情况下它非常慢. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- python – 如何从列表中删除所有字符串
- Python:使用os.fork更好的文件I / 0?
- Python调用微信公众平台接口操作示例
- “pythonic”方法将一串逗号分隔的整数解析为整数列表?
- 详解python使用Nginx和uWSGI来运行Python应用
- java.net.URISyntaxException: Illegal character in query
- 模式用于保存换行符分隔的json aka linejson aka jsonlines
- python使用正则表达式的search()函数实现指定位置搜索功能
- Python爬虫工程师面试问题总结
- Python不仅能爬网页还能爬取APP呢!批量爬取抖音视频!最新