Python列表解析配合if else
[i for i in range(k) if condition]
:此时if起条件判断作用,满足条件的,将被返回成为最终生成的列表的一员[i if condition else exp for exp]
:此时if…else被用来赋值,满足条件的i以及else被用来生成最终的列表
print([i for i in range(10) if i%2 == 0])
print([i if i == 0 else 100 for i in range(10)])
[str(val) if val != '#' else val for val in s]
[0, 2, 4, 6, 8]
[0, 100, 100, 100, 100, 100, 100, 100, 100, 100]
Python的列表操作 map zip等
- 翻转列表:
a = [1,2,3]
a[::-1] -->[3,2,1]
- 垂直镜像二维列表:
a[i][j] --> a[raw-i-1][j]
a = [[1,2,3],[4,5,6]]
a[::-1] -->[[4,5,6],[1,2,3]]
- 水平镜像二维列表:
a[i][j] --> a[i][col-j-1]
a = list(map(lambda x:x[::-1], a)) -->[[3,2,1],[6,5,4]]
- 同时水平与垂直镜像二维列表:
a[i][j] --> a[row-i-1][col-j-1]
a = list(map(lambda x:x[::-1], a))[::-1] -->[[6,5,4],[3,2,1]]
- 逆时针旋转二位列表:
a[i][j] --> a[col-j-1][i]
a = list(map(list, zip(*a)))[::-1]
- 顺时针旋转二位列表:
a[i][j] --> a[j][row-i-1]
a = list(map(list, zip(*a[::-1])))
顺时针旋转两次或逆时针旋转两次就相当于做了一个水平和垂直镜像
- 转置(或称关于左对角线镜像)
a[i][j] -> a[j][i]
a = list(map(list, zip(*a)))