如果没有更多关于A 和stack 内容的上下文,很难说这个算法是关于什么的。
不过rightspval[stack.pop()]的操作可以解释一下。
- 对于任何列表
a,a[x] 是a 的第x 个单元格,索引从0 开始;
- 对于任何列表
s,s.pop()删除并返回s的最后一个元素;
-
a[s.pop()] = ... 等价于 x=s.pop(); a[x] = ...。
这是.pop 的示例:
s = [10,11,12,13]
print(s)
# [10, 11, 12, 13]
print(s.pop())
# 13
print(s)
# [10, 11, 12]
现在,结合a[ ] 和s.pop() 的示例:
a = [100 + i for i in range(20)]
s = [10, 11, 12, 13]
print(a)
# [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119]
print(s)
# [10, 11, 12, 13]
a[s.pop()] = 'wouhou'
print(a)
# [100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 'wouhou', 114, 115, 116, 117, 118, 119]
print(s)
# [10, 11, 12]
由于s 的最后一个元素是13,这两行是等价的:
a[s.pop()] = 'wouhou'
s.pop(); a[13] = 'wouhou'
小记:在这个解释中,我假设a 和s 都是列表。实际上,a 可以是任何支持[ ] 操作的对象,例如列表、字符串或字典。