Python中的自定义长度矩阵

有时,当使用python创建矩阵时,我们可能需要控制给定元素在生成的矩阵中重复多少次。在本文中,我们将看到当元素以列表形式给出时,如何创建具有所需元素数量的矩阵。

使用压缩

我们声明一个包含要在矩阵中使用的元素的列表。然后,我们声明另一个列表,该列表将保存元素在矩阵中的出现次数。使用zip函数,我们可以创建结果矩阵,该矩阵将包含for循环以组织元素。

示例

listA = ['m', 'n', 'p','q']

# Count of elements
elem_count = [1,0,3,2]

# Given Lists
print("Given List of elements: " ,listA)
print("Count of elements : ",elem_count)

# Creating Matrix
res = [[x] * y for x, y in zip(listA, elem_count)]

# Result
print("The new matrix is : " ,res)

输出结果

运行上面的代码给我们以下结果-

Given List of elements: ['m', 'n', 'p', 'q']
Count of elements : [1, 0, 3, 2]
The new matrix is : [['m'], [], ['p', 'p', 'p'], ['q', 'q']]

与映射和mul

在这种方法中,我们使用运算符模块中的mul方法代替了上面的zip方法。同样,map函数将mul方法应用于列表中的每个元素,因此不需要for循环。

示例

from operator import mul

listA = ['m', 'n', 'p','q']

# Count of elements
elem_count = [1,0,3,2]

# Given Lists
print("Given List of elements: " ,listA)
print("Count of elements : ",elem_count)

# Creating Matrix
res = list(map(mul, listA, elem_count))

# Result
print("The new matrix is : " ,res)

输出结果

运行上面的代码给我们以下结果-

Given List of elements: ['m', 'n', 'p', 'q']
Count of elements : [1, 0, 3, 2]
The new matrix is : ['m', '', 'ppp', 'qq']