python二维列表如何解决?

用python编写一个程序,生成一个3行3列的列表ylist,若xlist的值大于其所有元素的平均值,则ylist该位置上的值为1,否则为0

xlist=[]
for i in range(3):
    xlist.append([ ])
    for j in range(3):
        x=eval(input(""))
        xlist[i].append(x)
#代码开始
……
#代码结束
for i in range(3):
    for j in range(3):
        print(ylist[i][j],end="")
    print()

预期输出:

000
110
110 


000
000
111 

没输入样例?

xlist=[]
for i in range(3):
    xlist.append([ ])
    for j in range(3):
        x=eval(input(""))
        xlist[i].append(x)
#代码开始
ylist=[[0 for i in range(3)] for j in range(3)]
avg=sum(sum(xlist,[]))/9#均值
#print(avg)
for i in range(3):
    for j in range(3):
        if xlist[i][j]>avg:
            ylist[i][j]=1
#代码结束
for i in range(3):
    for j in range(3):
        print(ylist[i][j],end="")
    print()
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632

  我偷懒“输入”,把3×3的矩阵数列用random随机了。😀


代码


from random import choice

xlist=[]
for i in range(3):
    xlist.append([ ])
    for j in range(3):
        x = choice(range(10)) # x=eval(input("输入:"))
        xlist[i].append(x)

print('\nxlist:\n')

for i in range(3):
    for j in range(3):
        print(xlist[i][j], end=" ")
    print()

print('\nylist:\n')

#代码开始

ylist = [[0 for i in range(3)] for i in range(3)]


#mean_x = sum(sum(xlist[i]) for i in range(3))/9
mean_x = sum(sum(xlist, []))/9 # 才学到的,不明其理,但与我原来的解析写法同效,help(sum)也没找到这种用法说明。

print(mean_x)

for i in range(3):
    for j in range(3):
        if xlist[i][j] > mean_x:
            ylist[i][j] = 1
        print(f'({i}, {j})', xlist[i][j], '>', round(mean_x, 2), ylist[i][j], xlist[i][j] > mean_x)
print(ylist)

#代码结束

for i in range(3):
    for j in range(3):
        print(ylist[i][j],end="")
    print('')

运行效果截图

img


  我最初ylist = [[0]*3]*3,这样初始化,得不到正确结果。这是曾经踩过的坑,打印查bug的代码不注释掉了,以引起有我同样踩的伙伴共勉。😀