Python运算符类似于R中的%in%
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Python运算符类似于R中的%in%,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1630字,纯文字阅读大概需要3分钟。
内容图文
我正在寻找一个类似于R中的%in%的运算符
例如,
x = c("a","b","c");
y = c("a","d")
x %in% y # would give me
#TRUE FALSE FALSE
如何在Python中实现这一点?
解决方法:
>>> x = ("a", "b", "c")
>>> y = ("a", "d")
>>> map(y.__contains__, x)
[True, False, False]
如果y存储在一个集合中,则可以加速包含测试,因为O(1)哈希表查找可以避免不必要的比较:
>>> y = {"a", "d"}
不要被其他受访者的虚假时间所欺骗.对于非平凡的数据集,重复的O(n)搜索是一个糟糕的想法.时间也被错误解释(在两项搜索空间中仅测试了三个输入,地图和集合的一次性全局变量查找的成本倾向于主导时间).此外,另一名受访者忽略了计时工具发出的警告,表明他的时间非常不一致(可能是由于缓存的中间结果使得时间无用).
我认为,如果您正在进行R风格统计分析,那么您的数据将大于A B C和A D.另一个答案是针对该玩具数据集进行调整,并且不会扩展到您可能关心的任何内容.
In [1]: import random
In [2]: people = [random.choice(['man', 'woman', 'boy', 'girl']) for i in range(1000)]
In [3]: children = ['boy', 'girl']
In [4]: %timeit [p in children for p in people]
10000 loops, best of 3: 65 μs per loop
In [5]: %timeit map(children.__contains__, people)
10000 loops, best of 3: 58.5 μs per loop
In [6]: %timeit map(set(children).__contains__, people)
10000 loops, best of 3: 49.8 μs per loop
随着搜索空间的增长大于两个选择,O(1)和O(n)搜索之间的差异变得越来越重要:
In [10]: scores = [random.choice(range(10)) for i in range(1000)]
In [11]: evens = [0, 2, 4, 6, 8]
In [12]: %timeit [x in evens for x in scores]
10000 loops, best of 3: 98.2 μs per loop
In [13]: %timeit map(evens.__contains__, scores)
10000 loops, best of 3: 90.5 μs per loop
In [14]: %timeit map(set(evens).__contains__, scores)
10000 loops, best of 3: 57.6 μs per loop
内容总结
以上是互联网集市为您收集整理的Python运算符类似于R中的%in%全部内容,希望文章能够帮你解决Python运算符类似于R中的%in%所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。