我有一個返回字符串的函數。我想要做的是獲取這些字符串並將其保存到列表中。我怎樣才能做到這一點?將字符串保存到列表中
for i in objects:
string = getstring(i)
x = 0
list[x] = string
x = x+1
我有一個返回字符串的函數。我想要做的是獲取這些字符串並將其保存到列表中。我怎樣才能做到這一點?將字符串保存到列表中
for i in objects:
string = getstring(i)
x = 0
list[x] = string
x = x+1
這是更好地使用列表理解在這種情況下,
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
和其他功能性特徵的map
,filter
,和reduce
函數具有在很大程度上由列表解析和生成器表達式被取代。
這確實是更「pythonic」的方式來解決這個問題。 – arbulgazar
在我的情況下,返回字符串的函數實際上會返回多個值,其中之一是一個字符串。你給出的第一個代碼如何被修改? – MSK
@MSK如果你知道你想得到的項目的索引,那麼你可以簡單地在'my_list = [對象中的obj] [1]]對象中設置'1',假設'1'是你的項目的索引想要得到。 – thefourtheye
你應該首先聲明列表:
L = []
然後,在for
循環,可以追加項目是:
for i in objects:
string = getstring(i)
L.append(string)
每次循環訪問''''時,您都會將'string'分配給'list [0]'。在'for'循環之前聲明列表:'list = list()'並且執行'list.append(string)'而不用任何x。但更好地使用列表推導作爲@thefourtheye [建議](http://stackoverflow.com/a/24523762/3240679) – arbulgazar