>> -6ren">
gpt4 book ai didi

python - 已排序的集合 : How do i get (extended) slices right?

转载 作者:行者123 更新时间:2023-11-28 22:07:59 25 4
gpt4 key购买 nike

我该如何解决?

>>> class unslice:
... def __getitem__(self, item): print type(item), ":", item
...
>>> u = unslice()
>>> u[1,2] # using an extended slice
<type 'tuple'> : (1, 2)
>>> t = (1, 2)
>>> u[t] # or passing a plain tuple
<type 'tuple'> : (1, 2)

理性:

我目前过度设计了一个能够返回项目范围的排序关联集合。我很可能想要在集合中存储小整数的元组(或者更病态的奇怪值,如省略号)(作为键),并且需要某种理智的方法来区分扩展切片和普通键

在一维情况下,这不是问题。我想不出有什么真正的理由要收集 slice 类型的值,特别是因为 xrange 值在功能上与 pythonistas 相似且更容易识别(根据我的判断) .所有其他扩展切片结构都是 sliceEllipsis 或普通旧 python 值

的元组

除 NumPy 中的多维数组外,似乎没有其他类型的扩展切片常用于任何类型的集合。

我确实需要支持 n 维轴,类似于八叉树或 GiS 索引。

最佳答案

由于无法区分调用 u[x,y] 和 u[(x,y)],您应该将您试图定义的两个操作之一转移到一个实际的方法中。你知道,一些名为 u.slice() 或 u.range() 或 u.getslice() 或 u.getrange() 或类似名称的东西。

实际上,在编写我的自己的程序时,我通常会发现,当我试图用两种截然不同的语义重载 Python 操作时,这意味着两者我正在做的事情需要变成命名方法!因为如果两者在含义上如此相似,以至于没有一个明显优于使用大括号 [] getitem 快捷方式,那么如果两个操作变得真实,可读,我的代码可能会更具可读性, 明确的方法名称。

但是,很难说更多,因为您还没有告诉我们您究竟是如何陷入这种困境的。为什么您既要在元组下存储内容又要获取范围?有人怀疑你一开始就在做一些复杂的事情。 :-)

哦,有这个问题的其他语言让你说 a[1][2] 做多维访问来轻松区分 a[1,2]。只是让您知道还有另一种选择。

关于python - 已排序的集合 : How do i get (extended) slices right?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/775490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com