簡體   English   中英

如何在Python中拼合包含日期的列表列表

[英]How to flatten a list of lists containing dates in Python

我有Python中的有效日期列表

   myList =['05-06-2015', '01-07-2015', '01-07-2015 01-07-2016',   '26-08-2015', '26-08-2016', '23-06-2015 26-08-2016 01-07-2015',   '06-07-2015'] 

如您所見,有些元素具有單個值,有些具有兩個值,有些具有三個日期。

我的問題是將所有這些減少為一個扁平的列表,如下所示:

    flatList =['05-06-2015', '01-07-2015', '01-07-2015', '01-07-2016',  
 '26-08-2015', '26-08-2016', '23-06-2015', '26-08-2016', '01-07-2015',  
 '06-07-2015']  

我試圖這樣做:

flatList  = list(itertools.chain.from_iterable(myList))

但是,這不符合我的預期,它會將每個字符拆分為一個列表。

您能否讓我知道我如何做到這一點?

預期產量:

    flatList =['05-06-2015', '01-07-2015', '01-07-2015', '01-07-2016',  
 '26-08-2015', '26-08-2016', '23-06-2015', '26-08-2016', '01-07-2015',  
 '06-07-2015']  

您需要split原始列表中的每個元素,然后展平,例如:

In []:
list(it.chain.from_iterable(s.split() for s in myList)

Out[]:
['05-06-2015', '01-07-2015', '01-07-2015', '01-07-2016', '26-08-2015',
 '26-08-2016', '23-06-2015', '26-08-2016', '01-07-2015', '06-07-2015']

您可以拆分每個元素,然后展平您將要得到的2D列表,或者,如果您希望避免進行展平,可以制作自己的循環:

newList = []
for i in myList:
    newList.extend(i.split())

盡管我想這不是Python風格的-但這仍然是一個答案。

from itertools import chain

my_list = [
    '05-06-2015', '01-07-2015', '01-07-2015 01-07-2016', '26-08-2015',
    '26-08-2016', '23-06-2015 26-08-2016 01-07-2015', '06-07-2015'
]

flat_list = list(chain(*[x.split() for x in my_list]))

print(flat_list)

輸出:

['05-06-2015', '01-07-2015', '01-07-2015', '01-07-2016', '26-08-2015', '26-08-2016', 
'23-06-2015', '26-08-2016', '01-07-2015', '06-07-2015']

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM