image.png

迭代器与生成器从哪里来?

列表
image.png
生成器函数
列表生成式
image.png
itertools
image.png

同时遍历二维列表

  1. def isvalid(self,row ,col, board,n):
  2. for i in range(n):
  3. if board[i][col]=='Q':
  4. return False
  5. for i,j in zip(range(row-1,-1,-1),range(col-1,-1,-1)):
  6. if board[i][j]=='Q':
  7. return False
  8. for i,j in zip(range(row-1,-1,-1),range(col+1,n)):
  9. if board[i][j]=='Q':
  10. return False
  11. return True
  12. """ zip """

accumulate

计算前缀和

  1. import itertools
  2. import operator
  3. if __name__ == '__main__':
  4. data = [1, 2, 3, 4, 5]
  5. # 计算前缀和
  6. print(list(itertools.accumulate(data)))
  7. # 计算到当前位置累积相乘得结果
  8. data = [3, 4, 6, 2, 1, 9, 0, 7, 5, 8]
  9. print(list(itertools.accumulate(data, operator.mul, initial=2)))
  10. # 计算到当前位置的最大值并且输出
  11. print(list(itertools.accumulate(data, max)))