【问题标题】:convert all rows to columns and columns to rows in Arrays [duplicate]将所有行转换为列,将列转换为数组中的行[重复]
【发布时间】:2023-03-14 17:47:01
【问题描述】:

我正在尝试创建这个程序(在 python 中),它将所有行转换为列,将列转换为行。

更具体地说,第一个输入是 2 个数字。 NMN - 总行数,M 总列数。我用过b=map(int, raw_input().split())。然后基于b[0],接下来的每一行N 将包含M 空格分隔的整数。例如:

Input:

3 5
13 4 8 14 1
9 6 3 7 21
5 12 17 9 3  

现在程序会将其存储在二维数组中:

arr=[[13, 4, 8, 14, 1], [9, 6, 3, 7, 21], [5, 12, 17, 9, 3]]

输出需要打印 M 行,每行包含 N 个空格分隔的整数。例如:

Output:

13 9 5
4 6 12
8 3 17
14 7 9
1 21 3

这是我迄今为止尝试过的:

 #Getting N and M from input
 NM=map(int, raw_input().split())
 arr=[]

 for i in xrange(NM[0]):
     c=map(int, raw_input().split())
     arr.append(c)

我创建了一个二维数组并从输入中获取值,但我不知道其余的。让我明确一点,我绝对不是要代码。正是如何将行转换为列以及反向转换。

提前致谢!

【问题讨论】:

    标签: python arrays


    【解决方案1】:

    您可以使用zip转置数据:

    arr = [[13, 4, 8, 14, 1], [9, 6, 3, 7, 21], [5, 12, 17, 9, 3]]
    new_arr = zip(*arr)
    # [(13, 9, 5), (4, 6, 12), (8, 3, 17), (14, 7, 9), (1, 21, 3)]
    

    【讨论】:

    • 非常感谢!有没有其他不使用内置函数的方法?
    • for j in range(len(arr[0])): print(" ".join(str(i[j]) for i in arr)) 将打印出您想要的内容
    • @RUser98 你为什么不想使用内置插件?传统的方式是循环,但是,嘿,如果你想重新发明轮子,你可能会得到一个爆胎!
    • 它返回一个元组列表而不是一个列表列表
    猜你喜欢
    • 2013-10-01
    • 1970-01-01
    • 2015-08-06
    • 2014-09-08
    • 2022-01-20
    • 2019-10-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多