簡體   English   中英

python 從 0 迭代到任何 Integer,正或負

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM