我很清楚列表和元组之间存在差异,并且元组不仅仅是常量列表,但是很少有例子表明代码实际上对两者进行了不同的处理(而不是通过编码约定),所以我(草率地)交替使用它们。
然后我遇到了一个案例,他们给出了完全不同的行为:
>>> import numpy as np
>>> a = np.arange(9).reshape(3,3)
>>> a
array([[0, 1, 2],
[3, 4, 5],
[6, 7, 8]])
>>> idx = (1,1)
>>> a[idx]
4
>>> idx = [1,1]
>>> a[idx]
array([[3, 4, 5],
[3, 4, 5]])
有人可以解释这里发生了什么吗?更重要的是,这个陷阱在 scipy 中还出现在哪里?