【问题标题】:how to convert a list of 25 lists into the list of 3 lists如何将 25 个列表的列表转换为 3 个列表的列表
【发布时间】:2022-01-20 02:55:18
【问题描述】:

假设我有一个包含 25 个列表的列表

A=[[77.77, 83.93, 44.4], [72.51, 76.34, 44.6], [71.54, 78.68, 44.6], [69.85, 75.5, 44.7], [77.12, 82.99, 44.3], [69.85, 75.08, 44.6], [65.61, 68.3, 44.8], [70.53, 74.14, 44.5], [66.49, 73.03, 44.6], [67.8, 71.6, 44.5], [62.88, 69.25, 44.7], [60.41, 67.03, 44.7], [63.72, 69.54, 44.6], [60.29, 64.54, 44.7], [60.59, 66.1, 44.6], [57.57, 61.95, 44.7], [58.73, 63.42, 44.7], [53.81, 59.1, 44.8], [53.38, 60.01, 44.7], [55.71, 61.47, 44.6], [52.02, 57.55, 44.7], [52.33, 57.61, 44.7], [50.31, 55.24, 44.7], [52.04, 58.39, 44.6], [51.66, 57.21, 44.6]]

我想知道如何将 A 列表转换为如下列表:

[[77.77,72.51,71.54,69.85,77.12,...,51.66],
[83.93,76.34,78.68,75.5,82.99,.....,57.21],
[44.4,44.6,44.6,44.7,44.3,.....,44.6]]

换句话说,我想形成一个包含3个列表的新列表,对于第一个子列表,它包含A列表中所有子列表中的第一个元素;对于第二个子列表,它包含所有子列表中的第二个元素在 A 列表中;对于第三个子列表,它包含 A 列表中所有子列表中的第三个元素。

您能否给我一些关于如何实现它的想法?

非常感谢!

【问题讨论】:

    标签: python list


    【解决方案1】:

    它被称为转置

    选项 1


    您可以在numpy 中使用.T

    import numpy as np
    
    A=[[77.77, 83.93, 44.4], [72.51, 76.34, 44.6], [71.54, 78.68, 44.6], [69.85, 75.5, 44.7], [77.12, 82.99, 44.3], [69.85, 75.08, 44.6], [65.61, 68.3, 44.8], [70.53, 74.14, 44.5], [66.49, 73.03, 44.6], [67.8, 71.6, 44.5], [62.88, 69.25, 44.7], [60.41, 67.03, 44.7], [63.72, 69.54, 44.6], [60.29, 64.54, 44.7], [60.59, 66.1, 44.6], [57.57, 61.95, 44.7], [58.73, 63.42, 44.7], [53.81, 59.1, 44.8], [53.38, 60.01, 44.7], [55.71, 61.47, 44.6], [52.02, 57.55, 44.7], [52.33, 57.61, 44.7], [50.31, 55.24, 44.7], [52.04, 58.39, 44.6], [51.66, 57.21, 44.6]]
    transpose_list = np.array(A).T.tolist()
    

    选项 2


    您可以使用zip(*iterables)map

    transpose_list = list(map(list, zip(*A)))
    

    输出:

    > print(transpose_list)
    [[77.77, 72.51, 71.54, 69.85, 77.12, 69.85, 65.61, 70.53, 66.49, 67.8, 62.88, 60.41, 63.72, 60.29, 60.59, 57.57, 58.73, 53.81, 53.38, 55.71, 52.02, 52.33, 50.31, 52.04, 51.66], 
    [83.93, 76.34, 78.68, 75.5, 82.99, 75.08, 68.3, 74.14, 73.03, 71.6, 69.25, 67.03, 69.54, 64.54, 66.1, 61.95, 63.42, 59.1, 60.01, 61.47, 57.55, 57.61, 55.24, 58.39, 57.21], 
    [44.4, 44.6, 44.6, 44.7, 44.3, 44.6, 44.8, 44.5, 44.6, 44.5, 44.7, 44.7, 44.6, 44.7, 44.6, 44.7, 44.7, 44.8, 44.7, 44.6, 44.7, 44.7, 44.7, 44.6, 44.6]]
    

    【讨论】:

      【解决方案2】:

      使用zip:

      out = [list(l) for l in zip(*A)]
      

      输出:

      [[77.77, 72.51, 71.54, 69.85, 77.12, 69.85, 65.61, 70.53, 66.49, 67.8, 62.88, 60.41, 63.72, 60.29, 60.59, 57.57, 58.73, 53.81, 53.38, 55.71, 52.02, 52.33, 50.31, 52.04, 51.66],  
       [83.93, 76.34, 78.68, 75.5, 82.99, 75.08, 68.3, 74.14, 73.03, 71.6, 69.25, 67.03, 69.54, 64.54, 66.1, 61.95, 63.42, 59.1, 60.01, 61.47, 57.55, 57.61, 55.24, 58.39, 57.21], 
       [44.4, 44.6, 44.6, 44.7, 44.3, 44.6, 44.8, 44.5, 44.6, 44.5, 44.7, 44.7, 44.6, 44.7, 44.6, 44.7, 44.7, 44.8, 44.7, 44.6, 44.7, 44.7, 44.7, 44.6, 44.6]]
      

      【讨论】:

        【解决方案3】:

        你可以使用循环轻松做到这一点

        lst1 = []
        lst2 = []
        lst3 = []
        finalList = []
        A=[[77.77, 83.93, 44.4], [72.51, 76.34, 44.6], [71.54, 78.68, 44.6], [69.85, 75.5, 44.7], [77.12, 82.99, 44.3], [69.85, 75.08, 44.6], [65.61, 68.3, 44.8], [70.53, 74.14, 44.5], [66.49, 73.03, 44.6], [67.8, 71.6, 44.5], [62.88, 69.25, 44.7], [60.41, 67.03, 44.7], [63.72, 69.54, 44.6], [60.29, 64.54, 44.7], [60.59, 66.1, 44.6], [57.57, 61.95, 44.7], [58.73, 63.42, 44.7], [53.81, 59.1, 44.8], [53.38, 60.01, 44.7], [55.71, 61.47, 44.6], [52.02, 57.55, 44.7], [52.33, 57.61, 44.7], [50.31, 55.24, 44.7], [52.04, 58.39, 44.6], [51.66, 57.21, 44.6]]
        for it in A:
            for indx in range(len(it)):
                if(indx == 0):
                    lst1.append(it[indx])
                elif(indx == 1):
                    lst2.append(it[indx])
                elif(indx == 2):
                    lst3.append(it[indx])
        
        finalList.append(lst1);
        finalList.append(lst2);
        finalList.append(lst3);
        print('final list=>',finalList)
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-10-18
          • 2016-07-05
          • 2016-05-27
          • 1970-01-01
          • 1970-01-01
          • 2012-09-29
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多