2015-11-04 93 views
-1

對於python的新手來自C++ 例如,在python中,有沒有辦法讓它替換列表位置f [n-1]中的元素,執行數學運算並將其添加到清單?是否有任何方法使用列表中的數字來執行操作?

f = [1, 1-x] 
for n in range (1,5): 
    f[n+1] = simplify((x*f[n-1])/n) 
    print(f[n]) 
+1

你應該避免修改列表而迭代它可能是一個列表理解? –

+0

f.append(someelement)'將添加一個元素到一個lis噸。 @PauloScardine,只要他正在使用索引,那麼它的罰款 –

+1

@RNar不,如果他刪除了一個元素,例如...這就是爲什麼它在Python中皺起眉頭。 –

回答

1

這是你想要的效果嗎?它在每次迭代中擴展列表f,一個元素。我刪除了簡化調用,因爲我期望它不會真的影響你的Python機制的問題。

x = 0.4 

f = [1, 1-x] 
for n in range(1,5): 
    f.append((x*f[n-1])/n) 

print(f) 

從這個輸出是現在

[1, 0.6, 0.4, 0.12, 0.053333333333333344, 0.012] 

你已經澄清一點,這裏是你的字符串處理的起點。

def simplify(expr): 
    return expr 

f = ["1", "1-x"] 
for n in range(1, 5): 
    f.append(simplify("x*(" + f[n-1] + ")/n")) 
    print(f[n]) 

從這個輸出是

1-x 
x*(1)/n 
x*(1-x)/n 
x*(x*(1)/n)/n 

這讓你減少的規劃問題來攻擊:如何減少的東西,如 「X *(X *」 到 「X ** 2」 。你在這裏解決了一些解析問題:你可能必須指定一個語法並對你的代碼進行合理的攻擊,以便到達下一個可以幫助的地方。

+0

我想要的是讓x未知,並讓列表繼續像[1,1-x,x-x ** 2/2,.....]。那可能嗎? –

+0

然後請完成您的發佈以反映實際問題。請參閱[MCVE](http://stackoverflow.com/help/mcve)和[關於主題](http://stackoverflow.com/help/on-topic)。如果您嘗試進行符號表示,則需要使用** simplify **中的特定於域的字符串處理器,並且您的列表需要保存字符串,而不是數字值。 – Prune

+0

@Joe_Rose我不知道我明白你想要什麼。如何在C++中發佈相應的解決方案,這樣問題就不那麼模糊了? –

相關問題