我有一个返回字符串的函数。我想要做的是获取这些字符串并将其保存到列表中。我怎样才能做到这一点?将字符串保存到列表中
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