enumerate和zip函数

#【leetcode807】——Max Increase to Keep City Skyline

python3:

import numpy as np
class Solution(object):
    def maxIncreaseKeepingSkyline(self, grid):
        rowmax = [max(i) for i in grid]
        colmax = [max(j) for j in zip(*grid)]
        
        return sum(min(rowmax[i],colmax[j])-val 
                  for i,row in enumerate(grid)
                  for j,val in enumerate(row))

 
【记录两个函数】

  1. python中很强大的enumerate()函数,可以实现数组的遍历,返回值有两个,分别是数组的下标和数值,对于一维数组和二维数组可以分别使用下面两种方法来遍历:
#一维数组
a=np.array([4,5,2,6])
for i,val in enumerate(a):
    print(val) #输出为 4 5 2 6
#二维数组
b=np.array([ [3, 0, 8, 4], [2, 4, 5, 7], [9, 2, 6, 3], [0, 3, 1, 0] ])
for i,row in enumerate(grid):
    for j,val in enumerate(row):
        print(val) #得到的是b的数值

 
2. python中的zip()和zip(*)函数
zip是打包(压缩),zip(*)是解压缩,是zip的逆过程。上例子:

x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = list(zip(x, y, z))
print(xyz)   #输出 [(1, 4, 7), (2, 5, 8), (3, 6, 9)]

xyz_ = list(zip(*xyz))
print(xyz_) #输出 [(1, 2, 3), (4, 5, 6), (7, 8, 9)]
【注意】输出的时候要用list/tuple的方式

你可能感兴趣的:(刷题笔记)