【问题标题】:Print same index of lists within lists [duplicate]在列表中打印相同的列表索引[重复]
【发布时间】:2018-09-28 02:59:41
【问题描述】:

我有一个包含列表的列表。

[['H','J','K','L'],['Q','W','E','R'],['R','W','Q','T']]

我想在一行中打印相同的索引,它们之间有一个空格。所以输出将是:

H Q R 
J W W
K E Q 
L R T

我尝试使用 enumerate 和 while 循环来使用 for 循环。似乎没有任何效果,我只是一个初学者,所以我什至不知道解决这个问题的正确方法。如果有人可以帮助我,我将不胜感激。

非常感谢!祝你有美好的一天!

【问题讨论】:

    标签: python python-3.x


    【解决方案1】:

    您可以将str.joinzip 一起使用:

    s = [['H', 'J', 'K', 'L'], ['Q', 'W', 'E', 'R'], ['R', 'W', 'Q', 'T']]
    new_s = '\n'.join(' '.join(i) for i in zip(*s))
    

    输出:

    H Q R
    J W W
    K E Q
    L R T
    

    【讨论】:

    • 如果你想打高尔夫球,你可以节省 6 个字符;)'\n'.join(map(' '.join, zip(*x)))
    • @chrisz 我想我知道你从哪里得到这个...... :)
    【解决方案2】:
    '''
    OP has 3 nested lists. OP wants to print each row of the list unto a line with
    a space in between each line item.
    '''
    
    sample_list = [['H', 'J', 'K', 'L'], ['Q', 'W', 'E', 'R'], ['R', 'W', 'Q', 'T']]
    
    
    import numpy as np
    
    sample_array = np.array(sample_list)
    print(sample_array.reshape(4, 3))
    

    这是输出:

    [['H' 'J' 'K']
     ['L' 'Q' 'W']
     ['E' 'R' 'R']
     ['W' 'Q' 'T']]
    

    作为初学者,了解 numpy 可能很有用。当您处理列表中的数据时,它可以简化诸如此类的任务。我在这里所做的是从您显示的嵌套列表中创建了一个 numpy 数组。 numpy 有一个方法叫做。 reshape() 允许您对齐数据所需的行数和列数。在您的示例中,您需要 4 行和 3 列的字母,因此将 4, 3 传递给 .reshape() 函数将允许您获得 4 行和 3 列的数据。作为初学者,Python 中有一些库,例如 numpy,可以帮助您简化此类任务。我希望这个答案对您了解更多信息有所帮助。

    【讨论】:

    • 输出是错误的 ;) 尝试 sample_array.T 代替。
    • 好收获。只是注意到 OP 只想要字母,没有引号,也没有嵌套列表括号
    【解决方案3】:

    对于您的具体情况,执行以下操作就足够了:

    for i in range(len(list_a[0])):
        print(" ".join([l[i] for l in list_a]))
    

    for 循环确保您按所需顺序获取元素,列表推导式仅从指定索引处的子列表中获取元素并按顺序打印它们。

    【讨论】:

      猜你喜欢
      • 2013-02-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      • 2021-08-26
      • 2016-05-21
      • 1970-01-01
      相关资源
      最近更新 更多