作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一些数据列表,例如
some_data = [1, 2, 4, 1, 6, 23, 3, 56, 6, 2, 3, 5, 6, 32, 2, 12, 5, 3, 2]
set
目的。
set
来自
some_data
然后制作
list
,裁剪然后制作
set
再次。
set(list(set(some_data))[:5]) # don't look so friendly
__getitem__
set
中的方法这不会使整个切片成为可能,但如果有机会让它看起来更好?
set
是无序的。因此,最终
set
中将获得哪些元素并不重要.
dict
与 None
值(value)观: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))
32
在
big_set
中出现故障(使用 Python 3.5),所以
small_set
是
{32, 1, 2, 3, 4}
.如果您添加了
0
对于您的数据,您几乎总是以
{0, 1, 2, 3, 4}
结束即使数据集变得很大,因为这些值总是会填满集合哈希表中的前五个位置。
random.sample
as suggested by jprockbelly .
关于python - 什么是切片集合的pythononic方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40736681/
我是一名优秀的程序员,十分优秀!