【问题标题】:Unwrap a list of list [duplicate]展开列表列表[重复]
【发布时间】:2019-12-01 10:22:59
【问题描述】:

我有这个清单:

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 和一般编程还很陌生。然而,我最终得到的只是一个值列表,而不是三组列表

【问题讨论】:

    标签: python parsing list-comprehension


    【解决方案1】:

    你想要做的是扁平化你的列表, 只需使用列表理解。 这将获取您拥有的任何列表列表并将其展平,以便, 您的列表只有一个深度。 即[["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])
    

    【讨论】:

    • 谢谢!这正是我想做的!我无法让它与提供的其他解决方案一起使用,但这成功了!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-03
    • 2020-10-28
    • 2018-07-07
    • 1970-01-01
    • 1970-01-01
    • 2013-06-11
    • 2016-08-06
    相关资源
    最近更新 更多