Python二维数组转为一维数组的四种方法

二维数组转为一维数组

已知a = [[4, 0, 1], [9, 2, 7], [8, 12, 90]]

列表推导式
[i for j in a for i in j]
itertools
from itertools import chain
list(chain.from_iterable(a))
sum小技巧
sum(a, [])
operator
import operator
from functools import reduce
print(reduce(operator.add, a))

实战(螺旋矩阵)

def fun(arr, lines):
    total_matrix = [[0] * lines for i in range(lines)]
    """ 二维矩阵转为一维矩阵 """
    num = [i for j in arr for i in j]  
    num = sorted(num)
    show_num = 0
    col = lines - 1
    row = lines - 1
    start_line = 0

    def print_ju(start_line, col, row, show_num):
        if row == 0:
            if lines % 2 != 0:
                total_matrix[lines // 2][lines // 2] = lines * lines
        else:
            for i in range(start_line, col):  # 打印上横行
                total_matrix[start_line][i] = num[show_num]
                show_num += 1
            for i in range(start_line, row, 1):  # 打印右竖行
                total_matrix[i][col] = num[show_num]
                show_num += 1
            for i in range(row, row - col + start_line, -1):  # 打印下横行
                total_matrix[row][i] = num[show_num]
                show_num += 1
            for i in range(col, col - row + start_line, -1):  # 打印左边竖行
                total_matrix[i][row - col + start_line] = num[show_num]
                show_num += 1
            return print_ju(start_line + 1, row - 1, col - 1, show_num)

    print_ju(start_line, row, col, show_num)
    for i in total_matrix:
        for x in i:
            print(format(x, '3'), end=' ')
        print()


if __name__ == '__main__':
    n = int(input('请输入螺旋矩阵的行数:'))
    arr = [[4, 0, 1], [9, 2, 7], [8, 12, 90]]
    fun(arr, n)
  • 7
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

!一直往南方开.

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值