【问题标题】:How to break down and print two list of lists together in Python?如何在 Python 中分解并打印两个列表列表?
【发布时间】:2016-11-07 21:25:46
【问题描述】:

这里有两个列表:

a_value = [[0.234, 0.88,0.98],[0.923,0.777,0.87],[0.77,0.98,0.89]]
b_value = [[(1,1),(1,2),(1,3)],[(1,1),(1,2),(1,3)],[(1,1),(1,2),(1,3)]]

我需要加入这两个列表,这样我的输出就会打印为:

Set1
b_value (1,1) = a_value 0.234
b_value (1,2) = a_value 0.88
b_value (1,3) = a_value 0.98
Set2
b_value (1,1) = a_value 0.923
b_value (1,2) = a_value 0.777
b_value (1,3) = a_value 0.87
Set 3
b_value (1,1) = a_value 0.77
b_value (1,2) = a_value 0.98
b_value (1,3) = a_value 0.89

我尝试过的代码如下:

print("\n".join([('b_value{} a_value={}'.format(i,j)) for i,j in zip(b_value,a_value)]))

输出:

b_value[(1, 1), (1, 2), (1, 3)] a_value=[0.234, 0.88, 0.98]
b_value[(1, 1), (1, 2), (1, 3)] a_value=[0.923, 0.777, 0.87]
b_value[(1, 1), (1, 2), (1, 3)] a_value=[0.77, 0.98, 0.89]

我不确定如何修改代码,以便分解列表列表并将它们分成“集合”。

【问题讨论】:

    标签: python list printing tuples


    【解决方案1】:

    由于您只需要打印 值而不是构建列表,因此您应该使用for 循环而不是列表理解。然后你还需要zip sublists 在一个嵌套循环中将它们的项目并排放置:

    for idx, (i ,j) in enumerate(zip(b_value,a_value), 1):
        print("Set{}".format(idx))
        for a,b in zip(i,j):
            print('b_value {} = a_value {}'.format(a,b))
    

    Set1
    b_value (1, 1) = a_value 0.234
    b_value (1, 2) = a_value 0.88
    b_value (1, 3) = a_value 0.98
    Set2
    b_value (1, 1) = a_value 0.923
    b_value (1, 2) = a_value 0.777
    b_value (1, 3) = a_value 0.87
    Set3
    b_value (1, 1) = a_value 0.77
    b_value (1, 2) = a_value 0.98
    b_value (1, 3) = a_value 0.89
    

    【讨论】:

      【解决方案2】:

      您需要展平这两个列表,如果您想在一行中执行此操作,我会使用 itertools.chain

      from itertools import chain
      
      a_value = [[0.234, 0.88,0.98],[0.923,0.777,0.87],[0.77,0.98,0.89]]
      b_value = [[(1,1),(1,2),(1,3)],[(1,1),(1,2),(1,3)],[(1,1),(1,2),(1,3)]]
      
      print("\n".join([('b_value{} a_value={}'.format(i,j)) for i,j in zip(chain.from_iterable(b_value),chain.from_iterable(a_value))]))
      

      但是,如果您需要更快的展平方法,请使用一些额外的行:

      a_value = [[0.234, 0.88,0.98],[0.923,0.777,0.87],[0.77,0.98,0.89]]
      b_value = [[(1,1),(1,2),(1,3)],[(1,1),(1,2),(1,3)],[(1,1),(1,2),(1,3)]]
      
      flat_a = [item for sublist in a_value for item in sublist]
      flat_b = [item for sublist in b_value for item in sublist]
      
      print("\n".join([('b_value{} a_value={}'.format(i,j)) for i,j in zip(flat_b,flat_a)]))
      

      【讨论】:

        【解决方案3】:

        您的格式化部分似乎没问题,但无法正确组合列表。为什么不先把它们弄平呢?

        a = [[0.234, 0.88,0.98],[0.923,0.777,0.87],[0.77,0.98,0.89]]
        b = [[(1,1),(1,2),(1,3)],[(1,1),(1,2),(1,3)],[(1,1),(1,2),(1,3)]]
        
        flat_a = [item for sublist in a for item in sublist]
        flat_b = [item for sublist in b for item in sublist]
        zip(flat_a, flat_b)
        

        【讨论】:

          【解决方案4】:

          我不知道你想要这个代码有多通用,但我想这会打印出你想要的:

          for myset in zip(a_value,b_value):
              for i in range(len(myset) + 1):
                  print("b_value " + str(myset[1][i]) + " = a_value " + str(myset[0][i]))
          

          【讨论】:

            猜你喜欢
            • 2023-02-25
            • 1970-01-01
            • 2020-07-17
            • 1970-01-01
            • 1970-01-01
            • 2016-01-01
            • 1970-01-01
            • 1970-01-01
            • 2011-01-24
            相关资源
            最近更新 更多