如何用列表推导式,替代下面的代码
M = [[random.randint(0, 20) for x in range(3)] for y in range(3)]
D = []
# 推导出对角线,用列表推导式
for m in range(3):
for n in range(3):
if m==n:
D.append(M[m][n])
elif abs(m-n)==2:
D.append(M[m][n])
print(D)
# 计算M中所有元素之和
sum = 0
for m in range(3):
for n in range(3):
sum = sum + M[m][n]
print('M中所有元素之和为sum=', sum)
如何用列表推导式替代上述生成列表D和sum
最好不要使用内置函数做变量,求和可以直接使用内置函数sum
D = [M[m][n] for m in range(3) for n in range(3) if m==n or abs(m-n)==2]
# 计算M中所有元素之和
s=sum(M[m][n] for m in range(3) for n in range(3))