[廖雪峰pythonチュートリアルリストジェネレータ練習]楊輝三角定義は以下の通りで、各行をリストと見なし、generatorを書いて、次の行のリストを出力し続けます.

1274 ワード

楊輝三角の定義は以下の通りである.
          1
         / \
        1   1
       / \ / \
      1   2   1
     / \ / \ / \
    1   3   3   1
   / \ / \ / \ / \
  1   4   6   4   1
 / \ / \ / \ / \ / \
1   5   10  10  5   1

各行をリストと見なし、generatorを書いて、次の行のリストを出力し続けます.
正しい実践:
def triangles
    L=[1]                                                         
    while True:
        yield L                                                           #    list
        L=[L[x]+L[x+1] for x in range(len(L)-1)]        #         
        L.insert(0,1)                                                 #     1
        L.append(1)                                                 #     1
        if len(L)>10:                                                 #   10 

            break

正しい実践:
    L = [1]
    while True:
        yield L
        L = [1] + [x + L[i+1] for i,x in enumerate(L[:-1]) ] + [1]

エラーの実践:
def triangles():
    L = [1]
    while True:
        yield L
        L = [1] + [L[i] + L[i+1] for i in enumerate(L[:-1])] + [1]
    L = [1] + [L[i] + L[i+1] for i in enumerate(L[:-1])] + [1]
TypeError: list indices must be integers or slices, not tuple