[英]Python: get the index in a while loop
我確實有一個while循環沒有迭代:
n = 0
while x0 > xmin:
xy.createSomeCube(x0,y0,z0,x1,y1,z1)
xy.someCube(n).setSomeParameters(dx,dy,dz)
...
x0 -= someDecrement(someArgument)
...
n += 1
是否有一種優雅的方法來忽略n = 0
和n += 1
並獲取while循環中當前步驟的索引?
更新:既然你編輯的帖子,下面的答案是不相關了。 我認為最簡單的解決方法就是堅持使用while循環; 只是增加了兩行代碼(在那又是一小段)。 如果您提供有關x0
遞減的函數/值的更多信息,也許我們可以找到一個包含列表/生成器的巧妙解決方案,以便可以使用for循環。
以前:
將其轉換為一個循環:
for n,i in enumerate(range(x0, xmin, -abc)):
xy.createSomeCube(i,y0,z0,x1,y1,z1)
xy.someCube(n).setSomeParameters(dx,dy,dz)
i
包含您以前的x0,每次迭代都減少abc。
enumerate
拉鏈在生成的列表中的項目的索引,所以n具有在每次迭代的當前索引。
編輯:正如Roger Fan指出的那樣,這僅在x0
, xmin
和abc
是整數的情況下有效。 否則,您必須堅持while循環。
您可以在itertools.count
使用半無限范圍:
for n in itertools.count(0):
if x0 <= xmin:
break
xy.createSomeCube(x0,y0,z0,x1,y1,z1)
xy.someCube(n).setSomeParameters(dx,dy,dz)
...
x0 -= someDecrement(someArgument)
您也可以使用
from itertools import count, takewhile
for n in takewhile(lambda _: x0 < xmin, count(0)):
xy.createSomeCube(x0,y0,z0,x1,y1,z1)
xy.someCube(n).setSomeParameters(dx,dy,dz)
...
x0 -= someDecrement(someArgument)
但這可能僅適用於功能編程迷:)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.