我们如何在数组索引中使用“和”运算符?

时间:2018-10-30 08:55:45

标签: python arrays python-3.x indexing iteration

我发现了一个使用A[i][j] += min(A[i - 1][j and j - 1:j + 2])的代码 我尝试了如下所示的类似实现,这给了我意外的结果,有人可以解释一下吗?在这种情况下,我无法理解“和”的含义。

a = [1,2,3,4,5,6,7,8,9,10,11,12]

print(a[0 and 3:4]) #[1, 2, 3, 4]

print(a[1 and 3:4]) #[4]

print(a[1 and 3:6]) #[4, 5, 6] 

print(a[0 and 3:6]) #[1, 2, 3, 4, 5, 6]

print(a[2 and 3:6]) #[4, 5, 6]

edit:在a [0和3:4]中,它包含从0到3的元素,但是如果我使用a [1和3:4],它仅给出了第3个元素,而我希望元素从1到3

2 个答案:

答案 0 :(得分:3)

AND的优先级高于切片:运算符。

您的表达式的工作原理是

a[0 and 3:4] --> a[(0 and 3):4] --> a[0:4] --> [1, 2, 3, 4]

答案 1 :(得分:1)

在您的情况下,您只是通过“和”比较整数值,而不是索引值后面的值。如果将任何东西与0进行比较,则您将获得0。在所有其他情况下,您将获得第二个整数的值(也许不是每个python解释器)。