解开清单清单

时间:2019-12-01 10:22:59

标签: python parsing list-comprehension

我有这个列表:

fxrate = 
[[['9.6587'], ['9.9742'], ['9.9203'], ['10.1165'], ['10.1087']],
 [['10.7391'], ['10.8951'], ['11.1355'], ['11.561'], ['11.7873']],
 [['8.61'], ['8.9648'], ['9.0155'], ['9.153'], ['9.1475']]]

我想使用Python列出这样的列表:

[[9.6587, 9.9742, 9.9203, 10.1165, 10.1087],
 [10.7391, 10.8951, 11.1355, 11.561, 11.7873],
 [8.61, 8.9648, 9.0155, 9.153, 9.1475]]

毋庸置疑,我对Python和一般编程还是相当陌生的。但是,我最终得到的只是一个值列表,而不是三组列表

1 个答案:

答案 0 :(得分:0)

您想要做的是将您的列表弄平, 只需使用列表理解即可。 这将采用您拥有的任何列表列表,并将其展平, 您的列表只有一个深度。 即[["foo"], ["bar"],["List_of_lists"]]将变成["foo", "bar", "complex_lists"]

flat_list = [item for sublist in l for item in sublist]

根据指定的here

您可以根据需要将此格式设置为代码。 像这样:

fxrate = 
   [[['9.6587'], ['9.9742'], ['9.9203'], ['10.1165'], ['10.1087']],
   [['10.7391'], ['10.8951'], ['11.1355'], ['11.561'], ['11.7873']],
   [['8.61'], ['8.9648'], ['9.0155'], ['9.153'], ['9.1475']]]
flat_fxrate = [[item for sublist in fxrate[0] for item in sublist],[item for sublist in fxrate[1] for item in sublist],[item for sublist in fxrate[2] for item in sublist]]

例如。由于您希望将其拆分为三部分,或者如果您打算对其进行扩展,则可以使用。或者使它更清晰,可以使用循环并附加每个部分。像这样注意:通常,使用循环会更好,因为无论此列表的大小如何,它都将始终有效。

flat_fxrate = []
fxrate = 
   [[['9.6587'], ['9.9742'], ['9.9203'], ['10.1165'], ['10.1087']],
   [['10.7391'], ['10.8951'], ['11.1355'], ['11.561'], ['11.7873']],
   [['8.61'], ['8.9648'], ['9.0155'], ['9.153'], ['9.1475']]]
for x in fxrate:
    flat_fxrate.append([item for sublist in x for item in sublist])