我創建了一個附加的對象列表下面的方式行何時下降列表理解和Pythonic的方式?
>>> foo = list()
>>> def sum(a, b):
... c = a+b; return c
...
>>> bar_list = [9,8,7,6,5,4,3,2,1,0]
>>> [foo.append(sum(i,x)) for i, x in enumerate(bar_list)]
[None, None, None, None, None, None, None, None, None, None]
>>> foo
[9, 9, 9, 9, 9, 9, 9, 9, 9, 9]
>>>
線
[foo.append(sum(i,x)) for i, x in enumerate(bar_list)]
將給予pylint的W1060表達被分配到什麼,但因爲我已經使用foo列表來追加我不需要賦予列表理解行的值。
我的問題是更多的程序正確性的問題
我應該放棄列表理解,只需使用一個簡單的表達?
>>> for i, x in enumerate(bar_list):
... foo.append(sum(i,x))
還是有沒有正確的方法來使用列表理解和分配任何東西?
回答
謝謝@ user2387370,@kindall和@Martijn皮特斯。對於其餘的評論我使用append,因爲我沒有使用list(),我沒有使用i + x,因爲這只是一個簡單的例子。
我離開它,如下所示:
histogramsCtr = hist_impl.HistogramsContainer()
for index, tupl in enumerate(local_ranges_per_histogram_list):
histogramsCtr.append(doSubHistogramData(index, tupl))
return histogramsCtr
我意識到這只是一個例子,但爲什麼要附加?爲什麼不只是'foo = [sum(i,x)...]'? –
'sum(i,x)'不起作用。你的意思是'i + x'? – user2357112
如果你真的想要一個班輪,你可以把一個'for'循環放在一行上。不過不推薦。 – user2357112