我在Python中有方括號的問題。我寫道,產生以下輸出代碼:Flatten list of lists
[[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]
但我想與執行一些計算,但在方括號不會讓我。
如何去掉括號?我看到了一些例子,但我不能將它們應用於這種情況。
我在Python中有方括號的問題。我寫道,產生以下輸出代碼:Flatten list of lists
[[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]
但我想與執行一些計算,但在方括號不會讓我。
如何去掉括號?我看到了一些例子,但我不能將它們應用於這種情況。
鑑於
d = [[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]
和你具體問題:我怎樣才能去掉括號?
使用列表理解:
new_d = [i[0] for i in d]
會給你這個
[180.0, 173.8, 164.2, 156.5, 147.2, 138.2]
然後,您可以訪問相應的指標,如個別項目,new_d[0]
會給你180.0
等,你可以再用於數學。
如果你要有一個數據集合,你會有某種括號或括號。
注意,該解決方案是你的問題/問題專門針對,它並沒有提供一個廣義解。也就是說,它適用於你的情況。
OP對列表沒有太多的想法,給他/她解決方案可能會導致不良影響,如果他/她想使用它來壓扁多個元素(沒有錯誤,只是默默地返回第一個...) – estani
使用嵌套列表理解將列表展平爲「刪除括號」。這將取消列入存儲在列表中的每個列表!
list_of_lists = [[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]
flattened = [val for sublist in list_of_lists for val in sublist]
嵌套列表內涵評估以同樣的方式,他們解開(即添加換行和標籤爲每個新的循環因此,在這種情況下:
flattened = [val for sublist in list_of_lists for val in sublist]
等同於:
flattened = []
for sublist in list_of_lists:
for val in sublist:
flattened.append(val)
最大的區別在於,list comp的評估速度比解開的循環快得多,並消除了append調用!
如果你在一個子列表中有多個項目,那麼list comp甚至可以將它扁平化。即
>>> list_of_lists = [[180.0, 1, 2, 3], [173.8], [164.2], [156.5], [147.2], [138.2]]
>>> flattened = [val for sublist in list_of_lists for val in sublist]
>>> flattened
[180.0, 1, 2, 3, 173.8, 164.2, 156.5, 147.2,138.2]
使用'itertools.chain.from_iterable'非常簡單。 –
請解釋原因。這就像它變得簡單 –
對不起,我的意思是更具可讀性/直觀性。由於OP難以區分哪些列表(數據序列)和列表如何用代碼表示(帶有方括號),所以我非常懷疑雙列表理解對他/她來說是有意義的。 –
>>> lis=[[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]
>>> [x[0] for x in lis]
[180.0, 173.8, 164.2, 156.5, 147.2, 138.2]
我會用itertools.chain
- 這也將滿足每個子列表> 1個元素:
from itertools import chain
list(chain.from_iterable([[180.0], [173.8], [164.2], [156.5], [147.2], [138.2]]))
對'itertools' +1,只是要發佈類似的答案,但你打敗了我。 –
你爲什麼要導入一個完整的模塊來做這麼簡單的事情? –
@PaulSeeb @PulSeeb最簡單,通用的內置方法,可以迭代迭代器...如果子列表有100個元素,該怎麼辦?我當然不希望爲那個輸入listcomp代碼... –
換句話說,你有一個列表的列表,你希望能夠在內部列表的所有成員上工作?另外,由於所有這些內部列表都有一個值,是否值得確保只有值插入到外部列表中?或者有些列表可能有多個元素?儘可能準確地提供所有可能的信息是很重要的。 –
爲了幫助人們在將來回答你的問題,儘量避免像「方括號不會讓我」這樣的一般性陳述,而是給出一個你嘗試去做的事情的具體例子,粘貼一個顯示錯誤結果的小測試代碼。 – DSM
相關的[flatten nested list](http://stackoverflow.com/q/952914/4279) – jfs