使 n*n 列表的下半部分为零,而不使用 python 中的任何函数

问题描述 投票:0回答:1
  1. 我尝试使用2个for循环和一个if语句来解决它。但我无法获得所需的输出。

输入-

1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1 
1 1 1 1 1 1 1 1 1 1
thislist=[1]*10
thislist=[thislist]*10
print(thislist)
for i in range(10): 
    for j in range(10): 
        print(thislist[i][j], end = " ") 
    print() 
print()
for i in range(10):
    for j in range(10):
        if i>j:
            thislist[i][j]=0
for i in range(10): 
    for j in range(10): 
        print(thislist[i][j], end = " ") 
    print() 

这是我得到的输出:

0 0 0 0 0 0 0 0 0 1 
0 0 0 0 0 0 0 0 0 1 
0 0 0 0 0 0 0 0 0 1 
0 0 0 0 0 0 0 0 0 1 
0 0 0 0 0 0 0 0 0 1 
0 0 0 0 0 0 0 0 0 1 
0 0 0 0 0 0 0 0 0 1 
0 0 0 0 0 0 0 0 0 1 
0 0 0 0 0 0 0 0 0 1 
0 0 0 0 0 0 0 0 0 1 
  1. 但是当我使用以下方法制作列表时,我得到了所需的输出。
thislist=[[1,1,1,1,1,1,1,1,1,1],
          [1,1,1,1,1,1,1,1,1,1],
          [1,1,1,1,1,1,1,1,1,1],
          [1,1,1,1,1,1,1,1,1,1],
          [1,1,1,1,1,1,1,1,1,1],
          [1,1,1,1,1,1,1,1,1,1],
          [1,1,1,1,1,1,1,1,1,1],
          [1,1,1,1,1,1,1,1,1,1],
          [1,1,1,1,1,1,1,1,1,1],
          [1,1,1,1,1,1,1,1,1,1]]
print(thislist)
for i in range(10):
    for j in range(10):
        if i>j:
            thislist[i][j]=0
for i in range(10): 
    for j in range(10): 
        print(thislist[i][j], end = " ") 
    print() 

注意-这是所需的输出-

1 1 1 1 1 1 1 1 1 1 
0 1 1 1 1 1 1 1 1 1 
0 0 1 1 1 1 1 1 1 1 
0 0 0 1 1 1 1 1 1 1 
0 0 0 0 1 1 1 1 1 1 
0 0 0 0 0 1 1 1 1 1 
0 0 0 0 0 0 1 1 1 1 
0 0 0 0 0 0 0 1 1 1 
0 0 0 0 0 0 0 0 1 1 
0 0 0 0 0 0 0 0 0 1 

有人可以解释一下上面两个代码有什么区别吗?

python-3.x list matrix
1个回答
0
投票

正如您所指出的,问题出在您创建列表列表的方式上。在你的第一个例子中,当你这样做时:

list1 = [1]*10
list_of_list1=[list1]*10

list_of_list1
实际上是原始 list1
shallow
副本的列表。然后,如果您修改
list_of_list1
中的值,则修改将发生在
list_of_list1
的所有行中。

副本的对立面是副本。您可能想在互联网上搜索有关此主题的更多信息

同时,你可以简单地尝试一下。

thislist = []
for row in range(10):
    list1 = [1]*10
    thislist.append(list1)

但当 numpy 可用时,我通常会使用它。

© www.soinside.com 2019 - 2024. All rights reserved.