本帖最后由 逃兵 于 2021-3-18 16:29 编辑  
- a= [[0]*10 for i in range(10)]
 
 - for i in range(10):
 
 -     for j in range(i+1):
 
 -         if j ==0 or j ==i:
 
 -             a[i][j]=1
 
 -             print(a[i][j],end=' ')
 
 -         else:
 
 -             a[i][j]=a[i-1][j]+a[i-1][j-1]
 
 -             print(a[i][j],end=' ')
 
 -     print()
 
  复制代码 
 
 
问题在于列表a,列表是不可哈希类型的数据,你直接*10的话,会导致二维列表公用一个id,任何一个列表改变所以列表都会改变 
 
例如: 
 
- >>> a = [[0]*10]*10
 
 - >>> a
 
 - [[0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
 
 - >>> a[0][0] = 1
 
 - >>> a
 
 - [[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, 0, 0, 0, 0, 0, 0, 0, 0, 0]]
 
 - >>> 
 
  复制代码 |