python的一些高效率写法【持续更新】

Python列表解析配合if else

  1. [i for i in range(k) if condition]:此时if起条件判断作用,满足条件的,将被返回成为最终生成的列表的一员
  2. [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)))
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值