我從mysql數據庫中獲取數據到列表中。 現在的問題是,列表中有很多括號。從Python列表中刪除括號
我得到:
list = [['a'], ['b'], ['c']]
我需要:
list = ['a', 'b', 'c']
任何想法如何格式化列表?
我從mysql數據庫中獲取數據到列表中。 現在的問題是,列表中有很多括號。從Python列表中刪除括號
我得到:
list = [['a'], ['b'], ['c']]
我需要:
list = ['a', 'b', 'c']
任何想法如何格式化列表?
一個簡單的列表理解應該做的工作:
my_list = [l[0] for l in list]
您可以使用itertools
import itertools
lst = [['a'], ['b'], ['c']]
merged_list = list(itertools.chain(*lst))
此外,list
是一個內置的類型。切勿使用list
作爲變量名稱。
或按Lattyware的建議:
merged_list = list(itertools.chain.from_iterable(lst))
你打敗了我! –
'itertools.chain.from_iterable(x)'比使用'itertools.chain(* x)'更可取。 –
請注意[itertools'文檔中的食譜](http://docs.python.org/2/library/itertools.html#recipes)有一個'flatten'函數,它顯示瞭如何做到這一點(這是當然,Lattyware的單線程)。 (如果你想壓平多層嵌套,請參閱PyPI上的'more-itertools'。) – abarnert
ll = [['a'], ['b'], ['c']]
l = [x for y in ll for x in y]
print l
輸出:
['a', 'b', 'c']
下面的函數將壓平的任意元素和列表,包括列出,然後再包含列表的列表:
from collections import Iterable
def flatten(l):
ret = []
for i in l:
if isinstance(i, Iterable):
ret.extend(flatten(i))
else:
ret.append(i)
return ret
如果你處理的小清單:
>>> sum([['a'],['b'],['c']], [])
['a', 'b', 'c']
但作爲列表變越大,演奏時間越慢。所以考慮到這一點:)
爲什麼這是低調的? – TerryA
http://stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python – kirelagin
這不是「太多的括號,「這是」我有一個列表清單。「告訴我們你是如何生成列表的,並且會告訴你如何改變它。 –
確實。最好改變你生成數據的方式,而不是在之後嘗試和壓扁數據結構。 –