水电d民工 发表于 2021-3-18 16:03:21

为啥我这个跑出来不是杨辉三角呢?

a=[*10]*10
for i in range(10):
    for j in range(i+1):
      if j ==0 or j ==i:
            a=1
            print(a,end=' ')
      else:
            a=a+a
            print(a,end=' ')
    print()

逃兵 发表于 2021-3-18 16:25:32

本帖最后由 逃兵 于 2021-3-18 16:29 编辑

a= [*10 for i in range(10)]
for i in range(10):
    for j in range(i+1):
      if j ==0 or j ==i:
            a=1
            print(a,end=' ')
      else:
            a=a+a
            print(a,end=' ')
    print()


问题在于列表a,列表是不可哈希类型的数据,你直接*10的话,会导致二维列表公用一个id,任何一个列表改变所以列表都会改变

例如:

>>> a = [*10]*10
>>> a
[, , , , , , , , , ]
>>> a = 1
>>> a
[, , , , , , , , , ]
>>>

水电d民工 发表于 2021-3-18 16:28:56

看了下一期视频就知道了。。。

jackz007 发表于 2021-3-18 16:40:41

本帖最后由 jackz007 于 2021-3-18 16:45 编辑

y = [ * i for i in range(1 , 11)]
for i in range(2 , 10):
    for j in range(i - 1):
      y = y + y
for i in range(10):
    print(* y)
      运行实况
D:\0002.Exercise\Python>python yh.py
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
1 5 10 10 5 1
1 6 15 20 15 6 1
1 7 21 35 35 21 7 1
1 8 28 56 70 56 28 8 1
1 9 36 84 126 126 84 36 9 1

D:\0002.Exercise\Python>

水电d民工 发表于 2021-3-18 16:46:52

jackz007 发表于 2021-3-18 16:40
运行实况

谢谢,搞定了,是生成的矩阵直接引用了
页: [1]
查看完整版本: 为啥我这个跑出来不是杨辉三角呢?