找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1574|回复: 4
收起左侧

[资源分享] python 刷题技巧

[复制链接]

23

主题

10

精华

274

积分

高级会员

Rank: 3Rank: 3

积分
274
发表于 3-15-2017 02:19 AM | 显示全部楼层 |阅读模式

亲!马上注册或者登录会查看更多内容!

您需要 登录 才可以下载或查看,没有帐号?立即注册

x

有的时候

**用Python解题经常可以作弊,Python 处理string非常方便, python内置模块非常多,比如排列组合啥的各种....**

有的时候

**Python大法好,就是偶尔慢**


Python也是可以追求运行速度的,除了算法方面的提升,也有些常见函数之间的区别

还有我刷的Python 2 和 3 已经迷茫了,如果有说错的地方敬请指出


===========初级技巧=================


-  排序

用lst.sort() 而不是nlst = sorted(lst)

区别在于lst.sort()是 in-place sort,改变lst, sorted会创建新list,成本比较高。


- 用xrange

xrangge 和 range的区别是在于 range会产生list存在memory中,xrange更像是生成器,generate on demand

所以有的时候xrange会更快

-  三目运算符

python 的三目运算符是这么写的 x if y else z

考虑这种list of list: matrix = [ [1,2,3] , [4,5,6] ]

row  = len(matrix)
col = len(matrix[0]) if row else 0

这样写通用的原因是, 当matrix = [], row = 0, col =0

- list 填 0

lst = [0 for i in range(3)] # lst = [0,0,0]

lst  = [[0 for i in range(3)] for j in range(2)]  # lst =  [[0, 0, 0], [0, 0, 0]]


下面这种写法危险:

lst1 = [ 0, 0, 0 ]
lst2  = [lst1] * 2  # lst2 = [ [0,0,0] , [0,0,0] ]
lst2[0][0] = 1  # lst2 = [ [1,0,0], [1,0,0]]

因为lst1是object,这样写会踩坑


- D.get(key, default)

如果这个key 没有在dict里面,给它一个默认值:

D = {}
if 1 in D:
  val = D[1]
else :
  val = 0

等同于这样写:

val = D.get(1, 0)


- reverse list

lst = [1,2,3]

print lst[::-1] #[3,2,1]

lst 也有reverse函数

这也也适用于str, str可是没有reverse 函数的,str[::-1] 可用 √


=================进阶一下=====================

Python 也是有自己的数据结构的!!!!

- deque
  还在用list来做queue么? deque,当求快queue的时候,你值得拥有

- Counter
  Counter做啥就顾名思义了

- yield
  用yield不用return ( 我也还在学习阶段

0

主题

0

精华

2

积分

新米人

Rank: 1

积分
2
发表于 3-15-2017 02:19 AM 来自美国米群网手机版 | 显示全部楼层
思密达前排顶,很好!
回复 支持 反对

使用道具 举报

0

主题

0

精华

2

积分

新米人

Rank: 1

积分
2
发表于 3-16-2017 10:58 PM | 显示全部楼层
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表