相关疑难解决方法(0)

Python:在__getitem__中实现切片

我正在尝试为我正在创建的类创建切片功能,以创建矢量表示.

到目前为止我有这个代码,我相信它会正确地实现切片,但每当我做一个调用,就像v[4]v是一个向量python返回一个关于没有足够的参数的错误.所以我试图弄清楚如何getitem在我的类中定义特殊方法来处理普通索引和切片.

def __getitem__(self, start, stop, step):
    index = start
    if stop == None:
        end = start + 1
    else:
        end = stop
    if step == None:
        stride = 1
    else:
        stride = step
    return self.__data[index:end:stride]
Run Code Online (Sandbox Code Playgroud)

python slice python-datamodel

99
推荐指数
5
解决办法
6万
查看次数

为什么切片对象在python中不可散列

为什么python中的切片对象不可清除:

>>> s = slice(0, 10)
>>> hash(s)
TypeError                                 Traceback (most recent call last)
<ipython-input-10-bdf9773a0874> in <module>()
----> 1 hash(s)

TypeError: unhashable type
Run Code Online (Sandbox Code Playgroud)

他们似乎是不可改变的:

>>> s.start = 5
TypeError                                 Traceback (most recent call last)
<ipython-input-11-6710992d7b6d> in <module>()
----> 1 s.start = 5

TypeError: readonly attribute
Run Code Online (Sandbox Code Playgroud)

上下文,我想创建一个将python int或slice对象映射到某些值的字典,如下所示:

class Foo:
   def __init__(self):
       self.cache = {}
   def __getitem__(self, idx):
       if idx in self.cache:
           return self.cache[idx]
       else:
           r = random.random()
           self.cache[idx] = r
           return r
Run Code Online (Sandbox Code Playgroud)

作为一种解决方法,我需要特殊的案例切片:

class Foo:
   def __init__(self):
       self.cache = {} …
Run Code Online (Sandbox Code Playgroud)

python

8
推荐指数
3
解决办法
696
查看次数

如何为键指定值

我执行以下操作时出现"不可用"错误:

a = {}
a["wer":"table.%%maker%%"]

Traceback (most recent call last):
  File "<pyshell#2>", line 1, in <module>
    a["wer":"table.%%maker%%"]
TypeError: unhashable type
Run Code Online (Sandbox Code Playgroud)

"wer"键在这里应该有"table.%maker%"值,但是我不能插入百分号.我应该做什么?

python string dictionary

0
推荐指数
1
解决办法
218
查看次数

标签 统计

python ×3

dictionary ×1

python-datamodel ×1

slice ×1

string ×1