2014-07-02 102 views
1

我有一個返回字符串的函數。我想要做的是獲取這些字符串並將其保存到列表中。我怎樣才能做到這一點?將字符串保存到列表中

for i in objects: 
    string = getstring(i) 
    x = 0 
    list[x] = string 
    x = x+1 
+0

每次循環訪問''''時,您都會將'string'分配給'list [0]'。在'for'循環之前聲明列表:'list = list()'並且執行'list.append(string)'而不用任何x。但更好地使用列表推導作爲@thefourtheye [建議](http://stackoverflow.com/a/24523762/3240679) – arbulgazar

回答

3

這是更好地使用列表理解在這種情況下,

my_list = [getstring(obj) for obj in objects] 

不是創建一個列表並在其中存儲字符串,而是根據objects中的對象創建一個字符串列表。你可以做同樣的map功能以及

my_list = map(getstring, objects) 

這需要每一個項目在objects,適用getstring功能給他們。所有的結果都收集在一個列表中。如果您在使用Python 3.x的,那麼你可能想要做

my_list = list(map(getstring, objects)) 

由於使用map不優選,儘可能使用列表理解去。從BDFL's blog報價,

奇怪的是,最初激勵引入lambda和其他功能性特徵的mapfilter,和reduce函數具有在很大程度上由列表解析和生成器表達式被取代。

+0

這確實是更「pythonic」的方式來解決這個問題。 – arbulgazar

+0

在我的情況下,返回字符串的函數實際上會返回多個值,其中之一是一個字符串。你給出的第一個代碼如何被修改? – MSK

+0

@MSK如果你知道你想得到的項目的索引,那麼你可以簡單地在'my_list = [對象中的obj] [1]]對象中設置'1',假設'1'是你的項目的索引想要得到。 – thefourtheye

2

你應該首先聲明列表:

L = [] 

然後,在for循環,可以追加項目是:

for i in objects: 
    string = getstring(i) 
    L.append(string) 
相關問題