[英]python iterate from 0 to any Integer, positive or negative
我必須從 0 迭代到任何 Integer(稱之為 x),它可以是正數或負數(0 和 x 都包括在內)(無論我是從 x 迭代到 0 還是從 0 到 x 都沒有關系)我知道我可以使用if-else 語句首先檢查 x 是正數還是負數,然后使用range(x+1)
if x>0 或range(x, 1)
if x<0 (兩者都將在 x=0 時起作用),例如:
if x >= 0:
for i in range(x+1):
pass
else:
for i in range(x, 1):
pass
但我想要一個更好的方法,特別是因為我實際上將迭代 2 個整數,並且這段代碼很亂(這里也不管我是從 y 迭代到 0 還是從 0 迭代到 y 都無關緊要)
if (x >= 0) and (y >= 0):
for i in range(x+1):
for j in range(y+1):
pass
elif (x >= 0) and (y < 0):
for i in range(x+1):
for j in range(y, 1):
pass
elif (x < 0) and (y >= 0):
for i in range(x, 1):
for j in range(y+1):
pass
else:
for i in range(x, 1):
for j in range(y, 1):
pass
您可以通過定義一個 function 來簡化它。
get_range_args = lambda x: (0, x+1) if x > 0 else (x, 1)
for i in range(*get_range_args(x)):
for j in range(*get_range_args(y)):
pass
一個不需要任何功能的簡單解決方案
for i in range(min(x, 0), max(x, 0) + 1):
for j in range(min(y, 0), max(y, 0) + 1):
pass
方法一:
x = -9
y = 1
def getPosNeg(num):
if num >= 0:
return f"0, {num+1}"
return f"{num}, 1"
x_eval = eval(getPosNeg(x)) # use eval
y_eval = eval(getPosNeg(y)) # use eval
for i in range(*x_eval):
for j in range(*y_eval):
print(i, j)
方法二:
x = -9
y = 1
def getPosNeg(num):
if num >= 0:
return (0, num+1)
return (num, 1)
x_eval = getPosNeg(x)
y_eval = getPosNeg(y)
for i in range(*x_eval):
for j in range(*y_eval):
print(i, j)
如果您只想要范圍內的正整數,請使用abs()
:
x = -9
y = 1
for i in range(abs(x+1)):
for j in range(abs(y+1)):
print(i, j)
文檔:
評估()
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.