2012-04-06 87 views
0

一個非常基本的問題..但我總是做這個不好的實現。減去和劃分Python中的列表中的所有元素

我有一個int列表。

然後,我有一個詮釋「K」和「J」

我想要做這樣的事情:

for ele in foo_list: 
    ele = (ele - k)/j 

是否有一個Python的語法糖,使這件事情看起來很漂亮。 另外,我有一種不好的預感這樣是一個非常糟糕的方式,容易出現的錯誤..

它是安全做一次手術

val = function(val) 

,所以你需要輸入你的輸出保存到輸入..這個方法可以在某個時候變成「Gotcha」嗎?或者做這些操作是否安全? 謝謝

謝謝。

回答

3

你的代碼應該是

foo_list = [ (ele - k)/j for ele in foo_list] 

編輯:要回答你的第二個問題,val = f(val)是罰款。但是您嘗試使用它的方式不起作用:ele不是指向列表中元素的指針,而是指向該元素的變量名稱。當你給別的東西分配別的東西的時候,你會在其他地方使用這個變量名稱:你不寫入它指向的位置。

+0

哦列出內涵咄!謝謝:) – Fraz 2012-04-06 21:17:25

+1

這是一個[list comprehension](https://www.youtube.com/watch?v=t85uBptTDYY) - 同樣值得注意的是,執行''x = f(x)''完全沒問題。 – 2012-04-06 21:17:30

+0

@Lattyware:好吧.. :)非常感謝.. Python陷阱可能很難弄清楚。感謝您澄清 – Fraz 2012-04-06 21:18:39

1

或映射像往常一樣:

foo_list = map(lambda ele: (ele-k)/j,foo_list) 
+3

需要注意的是,無論你需要使用''lambda''''map()''將會變得更慢,並且(更重要的是)難以閱讀,所以堅持列出comps(或者generator/dict/set comps如所須)。 ''map()''通常只用於非常簡單的事情。 – 2012-04-06 21:20:59

+0

是的,其實我喜歡用map和operator模塊一起使用 – luke14free 2012-04-06 21:22:02

相關問題