2014-07-02 103 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) 
相关问题