我需要编写一个函数,该函数接受行和列的数量并返回大小为rows × columns
的矩阵,该矩阵填充了介于-10,10之间的随机值。
**需要在没有NumPy,Pandas等的情况下完成。
我写:
Mat = []
def mf(r,c):
for i in range (0,c):
Mat.append([])
for i in range (0,r):
for j in range (0,c):
Mat[i].append(j)
Mat[i][j]=0
print(Mat)
mf(3,4)
如何在-10,10范围内插入随机值?
任何帮助,技巧或解决方案都将不胜感激,我是一位具有非常基础知识的python初学者。
非常感谢!
答案 0 :(得分:0)
一种选择是使用random
模块和嵌套的list comprehension来做到这一点:
>>> import random
>>> def randarray(r, c, lower=-10, upper=10, _randint=random.randint):
... return [[_randint(lower, upper) for col in range(c)]
... for row in range(r)]
...
>>> randarray(3, 2)
[[-1, -5], [-7, -8], [8, 7]]
>>> randarray(4, 2)
[[9, 1], [7, 5], [-1, -3], [-7, 9]]
在签名中使用_randint=random.randint
的原因是它将功能绑定到功能randarray
的本地名称。如果您有一个大的矩阵可以重复调用,那么它将比对该函数进行全局查找要快。
列表理解本质上是在说:
for each row:
for each column:
<random integer>
请注意,randint()
的两端都包含在内。
如果您确实需要优化,请查看itertools.repeat()
。