我有下面的循環^如何設置枚舉的增加量,取決於條件?
i = 0
for var in vars:
if var[ "ID" ] != 0 and var[ "ID" ] & 1:
print i, var[ "ID" ]
i += 1
我可以使用enumerate
這個循環,而不是反i
?如何設置枚舉的增加,依賴於這個條件:if var[ "ID" ] != 0 and var[ "ID" ] & 1:
我有下面的循環^如何設置枚舉的增加量,取決於條件?
i = 0
for var in vars:
if var[ "ID" ] != 0 and var[ "ID" ] & 1:
print i, var[ "ID" ]
i += 1
我可以使用enumerate
這個循環,而不是反i
?如何設置枚舉的增加,依賴於這個條件:if var[ "ID" ] != 0 and var[ "ID" ] & 1:
你可以使用filter
:
>>> vs = [{'ID': 1}, {'ID': 4}]
>>> for i, v in enumerate(filter(lambda x: x['ID'] & 1, vs)):
... print i, v
...
0 {'ID': 1}
您的代碼運行速度是否比我的更快? –
@ G-71很難說。如果性能在這裏很重要,你應該測試一下。 –
@ G-71 - 它比較緊湊,「i」的值在任何時候都是正確的。無論如何,我認爲'印刷'在這裏是最慢的部分。 – eumiro
不,我不認爲你可以使用enumerate
簡化此代碼(不是沒有細化vars
首先,讓enumerate
將僅適用於要素符合條件)。
說實話,我認爲代碼是非常簡單的,因爲它是。
'×〔 'ID'] = 0和x [ 'ID']&1' - 不只是這種條件足夠的第二部分? – eumiro
非常感謝你的評論,我會糾正這種情況 –
@eurmiro:是的,它在當前的情況下是足夠的(if語句)。否則當變量== 0時會有細微的差別;在這種情況下,整體評估爲False,但第二部分評估爲0. –