這是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