我最近一直在玩 Jython,我发现了一些奇怪的东西。我确定我在这里遗漏了一些明显的东西,但是有人可以向我解释为什么 .reverse() 不适用于多维数组的单行吗?
输入是使用 PythonInterpreter.set() 从 Java 传入的
当我执行以下 python 代码时...
#Integer[][] input
print(input[0])
input[0].reverse()
print(input[0])
我得到以下输出,其中的值没有被反转。
array(java.lang.Integer, [0, 1, 1, 1, 1])
array(java.lang.Integer, [0, 1, 1, 1, 1])
虽然如果我在一维数组上执行 reverse() ......
#Integer[] input;
print(input)
input.reverse()
print(input)
结果如我所料。
array(java.lang.Integer, [0, 1, 1, 1, 1])
array(java.lang.Integer, [1, 1, 1, 1, 0])
同样,如果我将 input[0] 复制到它自己的变量中,然后反转,它也可以按预期工作。
#Integer[][] input
print(input[0])
tmp = input[0]
tmp.reverse()
input[0] = tmp
print(input[0])
我也得到了我期望的结果。
array(java.lang.Integer, [0, 1, 1, 1, 1])
array(java.lang.Integer, [1, 1, 1, 1, 0])
我也得到了预期的结果......
#Integer[][] input
print(input[0])
input[0] = input[::-1]
print(input[0])
- -编辑 - -
在这些情况下, .insert() 似乎也无法采取行动......
#Integer[][] input
print(input[0])
input[0].insert(0,123)
print(input[0])
生产...
array(java.lang.Integer, [0, 1, 1, 1, 1])
array(java.lang.Integer, [0, 1, 1, 1, 1])
.append() 和 .pop() 也是如此。我觉得这适用于许多(如果不是全部)列表函数。