切片集合的pythononic方法是什么?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了切片集合的pythononic方法是什么?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1473字,纯文字阅读大概需要3分钟。
内容图文
![切片集合的pythononic方法是什么?](/upload/InfoBanner/zyjiaocheng/695/0b170e0aa9004a9fbda938d0cd02e3c6.jpg)
我有一些数据清单,例如
some_data = [1, 2, 4, 1, 6, 23, 3, 56, 6, 2, 3, 5, 6, 32, 2, 12, 5, 3, 2]
我想获得固定长度的唯一值(我不在乎我会得到什么),我也希望它被设置为对象.
我知道我可以从some_data进行设置,然后将其列出,裁剪并再次设置.
set(list(set(some_data))[:5]) # don't look so friendly
我知道我没有__getitem__方法,这不会使整个切片成为可能,但是是否有机会使其看起来更好?
而且我完全理解该集合是无序的.因此,哪些元素将进入最终集合并不重要.
可能的选择是使用:
> ordered-set
>将dict与None值一起使用:
set(dict(map(lambda x: (x, None), some_data)).keys()[:2]) # not that great
解决方法:
集是可迭代的.如果您真的不在乎从集合中选择了哪些项目,则可以使用itertools.islice获得一个迭代器,该迭代器将产生指定数量的项目(以迭代顺序中的第一个为准).将迭代器传递给set构造函数,您将获得子集而无需使用任何其他列表:
import itertools
some_data = [1, 2, 4, 1, 6, 23, 3, 56, 6, 2, 3, 5, 6, 32, 2, 12, 5, 3, 2]
big_set = set(some_data)
small_set = set(itertools.islice(big_set, 5))
尽管这是您所要求的,但我不确定您是否应该真正使用它.集可能会以非常确定的顺序进行迭代,因此,如果您的数据经常包含许多相似的值,那么每次执行此操作时,您最终都可能会选择一个非常相似的子集.当数据由整数组成(如示例所示)时,这尤其不利,整数会散列在一起.连续整数在迭代集合时会经常出现.使用上面的代码,big_set(使用Python 3.5)中只有32个乱序,因此small_set为{32,1,2,3,4}.如果将0添加到数据中,即使数据集变得巨大,您几乎总是以{0,1,2,3,4}结尾,因为这些值将始终填充集合哈希中的前五个位表.
为避免这种确定性采样,可以使用random.sample as suggested by jprockbelly.
内容总结
以上是互联网集市为您收集整理的切片集合的pythononic方法是什么?全部内容,希望文章能够帮你解决切片集合的pythononic方法是什么?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。