使用内联for循环初始化列表

时间:2018-06-13 17:27:10

标签: python

我正在使用以下代码初始化我的列表对象。

list = [
    func1(centroids[0],value),
    func1(centroids[1],value),
    ....,
    func1(centroids[n],value)]

我正在尝试使用内联迭代更优雅的方式。以下是一种可能方式的伪代码。

list = [value for value in func1(centroids[n],value)]

我不清楚如何以迭代方式调用func1。你能建议一个可能的实施吗?

3 个答案:

答案 0 :(得分:2)

一个简单的列表理解由“template”列表元素组成,后跟迭代所需的迭代器。

my_list = [func1(centroids[0],value) 
               for n in range(n+1)]

答案 1 :(得分:2)

对于一个对象列表,Python知道如何直接迭代它,这样你就可以消除大多数其他答案中显示的索引,

res = [func1(c, value) for c in centroids]

这就是它的全部。

答案 2 :(得分:1)

使用此代码:

list = [func1(centroids[x], value) for x in range(n)]

这称为列表理解。将您想要列表的值放在前面,然后是for循环。您可以使用for循环的迭代变量和值。在此代码中,您可以从函数调用n设置func1(centroids[x], value)个变量的数量。如果变量n等于,比方说4,list = [func1(centroids[0], value), func1(centroids[0], value), func1(centroids[0], value), func1(centroids[0], value)]将等于上面的代码