我正在尝试将另一位作者的一段C代码重写为Python,我遇到了以下类型的符号:
x = y[a=b];
其中y
是一个数组,a
和b
是整数。起初我认为它意味着这样的事情:
a = b;
x = y[a];
但显然它并没有。谁能告诉我这个表达意味着什么?请原谅我,如果这个问题是重复的,但很难用几个可搜索的关键词来总结这个问题,而且我找不到任何可以回答我问题的内容。
我尝试重写的代码的来源:link
编辑:
Python重写的代码不能正常工作(卡在循环中),所以我认为我误解了上面的语句。但正如你们几个人所说的那样,首先是正确的。那我一定是别的......
答案 0 :(得分:7)
x = y[a=b];
和
a = b;
x = y[a];
是等价的。表达式a=b
具有赋值后左操作数的值。
答案 1 :(得分:3)
我认为你实际上是对的,这意味着:
a = b;
x = y[a];
在将a = b
分配给b
后, b
本身会返回a
。因此,y[a=b]
将返回y[b]
,但也会将b
分配到a
。
在评论中你说,“如果a = 1且b = 3,那么它会解析为y [3],其中a = 3且b = 3”。
这正是上面的代码所做的:
一开始,a
等于1
且b
等于3
。
a = b;
现在a
包含3
,b
仍然包含3
。
x = y[a];
现在x
已为y[3]
分配了值,a
仍然包含3
,b
仍然包含3
。