我想將此 Python 代碼(如下)轉換為串列理解:
def list1(a):
L = [100]
n = int((L[0] - a)/0.2)
for i in range (n):
var = L[i]-0.2
var = round(var,2) if var * 100 % 100 != 0 else int(var)
L.append(var)
return L
print(list1(25))
我試過了,但沒有用:
def list2(a):
L = [100]
n = int((L[0] - a)/0.2)
i = 0
var = L[i]-0.2
L = [L[i]-0.2 for i in range (n) round(var,2) if (var) * 100 % 100 != 0 else int(var)]
return L
print(list2(25))
你能幫我嗎 ?
uj5u.com熱心網友回復:
這是一個串列推導式,可以為您提供相同的結果(但作業方式不同):
def list1(a):
return [x/5 if x%5 else x//5
for x in range(500, 5*a-1, -1)]
還有一個與您的for回圈類似的作業:
def list1(a):
return [round(var,2) if var * 100 % 100 != 0 else int(var)
for n in [int((100 - a)/0.2)]
for i in range(1 n)
for var in [100 if i == 0 else var-0.2]]
但那是hacky。如果下一個元素依賴于前一個元素,那么使用回圈(在這種情況下for甚至是回圈)確實比使用串列推導更好。while
uj5u.com熱心網友回復:
您可以使用生成器運算式list訪問一段時間。這種方法與 for 回圈相比沒有優勢,并且可讀性較差。在您的用例中使用單個串列推導并不容易。listlist.extend
def list2(a):
L = [100]
n = int((L[0] - a)/0.2)
L.extend(round(L[i]-0.2,2) if (L[i]-0.2) * 100 % 100 != 0 else int(L[i]-0.2) for i in range(n))
return L
list2(25) == list1(25)
輸出
True
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/433011.html
上一篇:我想列印總是減去3的整數
