python slice表示法中的管道字符有什么作用?

Win*_*ing 0 python

在用于列表和元组的python切片符号中,我注意到管道字符不会引发错误。我不确定它到底能做什么,因为结果似乎有些随机。

testA = [1,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)

鉴于

testA[0:3]
Run Code Online (Sandbox Code Playgroud)

[1, 2, 3]
Run Code Online (Sandbox Code Playgroud)

testA[4:6]
Run Code Online (Sandbox Code Playgroud)

[5,6]

这根管子做什么?

testA[0:3|4:6]
Run Code Online (Sandbox Code Playgroud)

它给

[1,7]

有任何想法吗?

Kon*_*lph 8

testA[0:3|4:6]
Run Code Online (Sandbox Code Playgroud)

评估为

testA[0 : (3 | 4) : 6]
Run Code Online (Sandbox Code Playgroud)

依次通过按位或

testA[0 : 7 : 6]
Run Code Online (Sandbox Code Playgroud)

并且这对应于0 : 7步长为6 的范围。因此,仅使用第一个和最后一个索引。