这是Python。我试图弄清楚这是如何工作的,所以我可以把它翻译成Java。这个工作究竟和多少()?
numInversions = sum(
state.index(START[j]) > state.index(START[i])
for i in range(16) for j in range(i) # each pair (i,j)
)
这是Python。我试图弄清楚这是如何工作的,所以我可以把它翻译成Java。这个工作究竟和多少()?
numInversions = sum(
state.index(START[j]) > state.index(START[i])
for i in range(16) for j in range(i) # each pair (i,j)
)
准则是类似于详细格式
numInversions = =
for i in range(16):
for j in range(i):
if state.index(START[j]) > state.index(START[i]):
numInversions += 1
除了整个表达式缠绕作为发电机表达并传递给内置的总和
嵌套循环结构是从左读向右移动至
for i in range(16):
for j in range(i):
总结评估为布尔真或假的条件。因此,您最终将计算所有条件为True的实例
内部循环根据两个嵌套循环生成布尔值(True
和False
)。在Python中,布尔值是int
的一个子类,当求和时分别充当1
和0
,分别为True
和False
。
所以,你可以为改写这个:
numInversions = 0
for i in range(16):
for j in range(i):
if state.index(START[j]) > state.index(START[i]):
numInversions += 1
在(伪)的Java:
int numInversions = 0;
for (int i = 0; i < 16; ++i) {
for (int j = 0; j < i; ++j) {
if (state.index(START[j]) > state.index(START[i])) {
++numInversions;
}
}
}
我非常理解,但怎么>运营商的作品,从中 – JRowan 2013-02-27 19:02:49