首页 > 解决方案 > 在不使用python中的任何函数的情况下使* n列表的下半部分为零

问题描述

  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.xlistmatrix

解决方案


正如您所指出的,问题来自您创建列表列表的方式。在您的第一个示例中,您执行以下操作:

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

list_of_list1实际上是原始的list1拷贝列表。那么如果修改 中的值list_of_list1,修改将发生在 的所有行中list_of_list1

拷贝的对立面是拷贝。您可能想在 Internet 上搜索有关此主题的更多信息

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

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

但我通常会在可用时使用numpy


推荐阅读