<legend id='Z7DeL'><style id='Z7DeL'><dir id='Z7DeL'><q id='Z7DeL'></q></dir></style></legend>

    • <bdo id='Z7DeL'></bdo><ul id='Z7DeL'></ul>
      1. <tfoot id='Z7DeL'></tfoot>
      2. <i id='Z7DeL'><tr id='Z7DeL'><dt id='Z7DeL'><q id='Z7DeL'><span id='Z7DeL'><b id='Z7DeL'><form id='Z7DeL'><ins id='Z7DeL'></ins><ul id='Z7DeL'></ul><sub id='Z7DeL'></sub></form><legend id='Z7DeL'></legend><bdo id='Z7DeL'><pre id='Z7DeL'><center id='Z7DeL'></center></pre></bdo></b><th id='Z7DeL'></th></span></q></dt></tr></i><div id='Z7DeL'><tfoot id='Z7DeL'></tfoot><dl id='Z7DeL'><fieldset id='Z7DeL'></fieldset></dl></div>

        <small id='Z7DeL'></small><noframes id='Z7DeL'>

      3. 什么是蟒蛇切片法?

        时间:2024-08-10
            <tbody id='GONS5'></tbody>

            <legend id='GONS5'><style id='GONS5'><dir id='GONS5'><q id='GONS5'></q></dir></style></legend>

            <small id='GONS5'></small><noframes id='GONS5'>

              <i id='GONS5'><tr id='GONS5'><dt id='GONS5'><q id='GONS5'><span id='GONS5'><b id='GONS5'><form id='GONS5'><ins id='GONS5'></ins><ul id='GONS5'></ul><sub id='GONS5'></sub></form><legend id='GONS5'></legend><bdo id='GONS5'><pre id='GONS5'><center id='GONS5'></center></pre></bdo></b><th id='GONS5'></th></span></q></dt></tr></i><div id='GONS5'><tfoot id='GONS5'></tfoot><dl id='GONS5'><fieldset id='GONS5'></fieldset></dl></div>
            • <tfoot id='GONS5'></tfoot>

                  <bdo id='GONS5'></bdo><ul id='GONS5'></ul>

                • 本文介绍了什么是蟒蛇切片法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着跟版网的小编来一起学习吧!

                  问题描述

                  我有一些数据列表,例如:

                  some_data = [1, 2, 4, 1, 6, 23, 3, 56, 6, 2, 3, 5, 6, 32, 2, 12, 5, 3, 2]
                  

                  并且我希望获得固定长度的唯一值(我不在乎将获得哪个值),并且我还希望它是set

                  我知道我可以从some_data执行set,然后使其list,裁剪它,然后再次使其set

                  set(list(set(some_data))[:5])  # doesn't look so friendly
                  

                  我知道我在set中没有__getitem__方法,这不会使整个切片成为可能,但是是否有机会使它看起来更好?

                  我完全理解set是无序的。因此,最终set中包含哪些元素并不重要。

                  可以选择使用:

                  • ordered-set

                  • 使用dictNone值:

                     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(使用Python3.5)中只有32是乱序的,所以small_set{32, 1, 2, 3, 4}。如果将0添加到数据中,即使数据集变得很大,最终结果也几乎总是{0, 1, 2, 3, 4},因为这些值总是会填满集合哈希表中的前五个槽。

                  要避免这种确定性采样,您可以使用random.sampleas suggested by jprockbelly。

                  这篇关于什么是蟒蛇切片法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!

                  上一篇:如何在没有循环的情况下检查一个列表是否包含在另一个列表中? 下一篇:声纳中Python的测试/测试覆盖没有出现吗?

                  相关文章

                  <legend id='FxXdQ'><style id='FxXdQ'><dir id='FxXdQ'><q id='FxXdQ'></q></dir></style></legend>

                • <i id='FxXdQ'><tr id='FxXdQ'><dt id='FxXdQ'><q id='FxXdQ'><span id='FxXdQ'><b id='FxXdQ'><form id='FxXdQ'><ins id='FxXdQ'></ins><ul id='FxXdQ'></ul><sub id='FxXdQ'></sub></form><legend id='FxXdQ'></legend><bdo id='FxXdQ'><pre id='FxXdQ'><center id='FxXdQ'></center></pre></bdo></b><th id='FxXdQ'></th></span></q></dt></tr></i><div id='FxXdQ'><tfoot id='FxXdQ'></tfoot><dl id='FxXdQ'><fieldset id='FxXdQ'></fieldset></dl></div>

                  1. <small id='FxXdQ'></small><noframes id='FxXdQ'>

                      <bdo id='FxXdQ'></bdo><ul id='FxXdQ'></ul>
                    <tfoot id='FxXdQ'></tfoot>