首页 > 解决方案 > 从列表和两个为元素提供动力的数字计算矩阵

问题描述

我正在尝试定义一个函数。该函数应该通过在命令行中插入一个数字列表和两个附加数字来计算一个矩阵,这应该是列表中每个元素将被供电的范围。

例如,如果我powers([2,3,4],0,2)在命令行中插入,输出应该是一个 3x3 矩阵,第一行[2^0,2^1,2^2]、第二[3^0,3^1,3^2]行和第三行[3^0,3^1,3^2]

它应该看起来像:

输入:powers([2,3,4],0,2)

输出:[[1, 2, 4],[1,3,9],[1,4,16]]

有谁知道如何通过不将任何其他包导入python来做类似的事情?

到目前为止我有

def powers(C,a,b):

    for c in C:
        matrix=[]

        for i in range(a,b):
            c = c**i
            matrix.append(c)
        
    print(matrix)

但这只会给我一排。

标签: pythonfunctionmatrix

解决方案


在您的外部循环中,您将在每次迭代中清空矩阵。在您的内部循环中,您将权力直接附加到矩阵,而您应该创建一个子列表并将数字附加到它,然后将子列表附加到矩阵。为此,您只需要一个简单的列表理解:

def powers(C, a, b):
    matrix = [[c ** i for i in range(a, b + 1)] for c in C]
    return matrix

测试:

>>> powers([2, 3, 4], 0, 2)
[[1, 2, 4], [1, 3, 9], [1, 4, 16]]

范围是range(a, b + 1)因为 Python 的范围在结束前一步停止(不包括结束),所以要包括buse b + 1


推荐阅读