gpt4 book ai didi

python - python列表括号中的逗号索引

转载 作者:行者123 更新时间:2023-12-04 02:52:16 32 4
gpt4 key购买 nike

例子如下。这是什么? python 列表括号中有一个逗号。我怎么能理解这个?

id(x[i,j]) == id(x[i][j]) 显示 True。

那么,x[i,j]x[i][j] 处总是相同的吗?

或者,x[i,j] 实际上与 x[(i,j)] 相同?索引是元组。

import numpy as np
x = np.random.random((64,3,32,10))
for i in range(x.shape[0]):
for j in range(x.shape[1]):
print(x[i,j])

======
我猜这是numpy的特殊实现。 Numpy 覆盖“_getitem__”函数以使用元组索引。

我试过了
1) 基本的 python
2) 覆盖“_getitem__”和
3) 基本的 numpy。

1) 显示错误。 “类型错误:列表索引必须是整数或切片,而不是元组”
2) 有....如果我正确实现没问题。
3) 效果很好。

所以,我猜 numpy 开发人员确实为元组实现了他们的“getitem”函数,并且它的工作原理相同 arr[x,y,z] == arr[x][y][z] .

最佳答案

虽然 numpy 与两者的行为方式相同,但它们在技术上是不同的。

你可以通过自己实现 __getitem__ 来看到区别:

class GetitemTest(object):
def __getitem__(self, item):
print("getting: %r" %(item, ))
return self

然后:

>>> x = GetitemTest()
>>> x[1,2]
getting: (1, 2)
<__main__.GetitemTest object at 0x10bb6d810>

>>> x[1][2]
getting: 1
getting: 2
<__main__.GetitemTest object at 0x10bb6d810>

注意 x[1,2] 只调用了一次 __getitem__,但是 x[1][2] 调用了两次。

关于python - python列表括号中的逗号索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54523863/

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