我有一个包含其他列表的列表:
list_of_lists = [[['2019-03-27-16:08:21 Now:(87.0866) Epoch:(1553728101) 45(secs)ago ItemID:(51141)', '2019-03-20-16:09:21 7d:(87.2040) Epoch:(1553123361) 604785(secs)ago ItemID:(51141)', 'Interval:(1m) Diff:(-0.1174) Now_[less-than]_Past(7d) GPM:(0.00008153) +GROWTH'], 'OK: Date:[2021-04-07 10:43:10.037075] Days.Until:[741.773648417]']]
如何将这些列表合并为一个列表,使其看起来像这样:
['2019-03-27-16:08:21 Now:(87.0866) Epoch:(1553728101) 45(secs)ago ItemID:(51141)', '2019-03-20-16:09:21 7d:(87.2040) Epoch:(1553123361) 604785(secs)ago ItemID:(51141)', 'Interval:(1m) Diff:(-0.1174) Now_[less-than]_Past(7d) GPM:(0.00008153) +GROWTH', 'OK: Date:[2021-04-07 10:43:10.037075] Days.Until:[741.773648417]']
我已经在网上找到了一些代码,但是并没有实现我想要的功能:
flattened_list = [y for x in list_of_lists for y in x]
我也希望解决方案不涉及pip install
不属于默认python软件包的模块。
答案 0 :(得分:1)
使用简单的递归方法,您可以处理任何级别的嵌套:
def flat(l):
if isinstance(l, list):
result = []
for i in l:
result = result + flat(i)
return result
else:
return [l]
>>> flat(list_of_lists)
['2019-03-27-16:08:21 Now:(87.0866) Epoch:(1553728101) 45(secs)ago ItemID:(51141)', '2019-03-20-16:09:21 7d:(87.2040) Epoch:(1553123361) 604785(secs)ago ItemID:(51141)', 'Interval:(1m) Diff:(-0.1174) Now_[less-than]_Past(7d) GPM:(0.00008153) +GROWTH', 'OK: Date:[2021-04-07 10:43:10.037075] Days.Until:[741.773648417]']
另一个例子:
>>> flat([1,2,[3,[4,5]],6,[7,8]])
[1, 2, 3, 4, 5, 6, 7, 8]
答案 1 :(得分:0)
由于列表中的某些项目包含列表,而其他项目则不包含列表,因此简单的展平选项无法直接使用。我建议创建一个将递归地平化列表列表的函数(包括列表本身的项目):
def flatten(aList):
if not isinstance(aList,list): return [aList]
return [ item for subList in aList for item in flatten(subList)]
flattened_list = flatten(list_of_lists)