[科普贴]如果遇到天价医疗账单该怎么办

一亩三分地论坛

 找回密码
 Sign Up 注册获取更多干货

最近看过此主题的会员

锦晖律师事务所
12月16日
H1B讲座通知
E轮2.5亿美元融资
K12教育独角兽一起作业诚聘
机器学习/数据统计/教育等职位
码农求职神器Triplebyte:
不用海投
内推多家公司面试
高效直聘+内推,70%面试率
AI帮你免费完善简历
直击全美十万个科技职位
坐标湾区
DreamCraft创始团队
招聘游戏开发工程师
游戏初创公司招聘工程师、UIUX Designer和游戏策划
查看: 8518|回复: 33
收起左侧

[学Python/Perl] Python刷题的一些技巧分享

  [复制链接] |试试Instant~
我的人缘0
OO0OO 发表于 2016-10-25 06:49:57 | 显示全部楼层 |阅读模式
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  95% (124)
 
 
4% (6)  踩

注册一亩三分地论坛,查看更多干货!

您需要 登录 才可以下载或查看,没有帐号?Sign Up 注册获取更多干货

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 ( 我也还在学习阶段




import collections就可以用了,参见  collections — High-performance container datatypes



===============举个当时我就震惊了的例子===============


看到在stackoverflow上看到有人求这样一个数据结构:



  • Close to O(1) performance for as many of the following four operations.
  • Maintaining sorted order while inserting an object into the container.
  • Ability to peek at last value (the largest value) contained in the object.
  • Allowing for pops on both sides (getting the smallest or largest values).
  • Capability of getting the total size or number of objects being stored.
  • Being a ready made solution like the code in Python's standard library.


然后真的可以implement出来
  1. import collections
  2. import bisect

  3. class FastTable:

  4.     def __init__(self):
  5.         self.__deque = collections.deque()

  6.     def __len__(self):
  7.         return len(self.__deque)

  8.     def head(self):
  9.         return self.__deque.popleft()

  10.     def tail(self):
  11.         return self.__deque.pop()

  12.     def peek(self):
  13.         return self.__deque[-1]

  14.     def insert(self, obj):
  15.         index = bisect.bisect_left(self.__deque, obj)
  16.         self.__deque.rotate(-index)
  17.         self.__deque.appendleft(obj)
  18.         self.__deque.rotate(index)
复制代码
对此我只想表示牛,并且我硬生生的用它来解过人家不是要这种思路的题目。


有想到的再补充,也欢迎任何技巧分享





补充内容 (2016-10-28 00:40):
Python有built-inheap,是min heap.  heapq,如何来用它实现max heap呢,看到过一个有意思的方法是把key取负,比如把100变成-100,5变成-5。

评分

参与人数 8大米 +120 收起 理由
kiawe + 5 给你点个赞!
Pro MacBook + 5 给你点个赞!
coldhenry + 3 很有用的信息!
D-Bazinga + 3 谢谢你的介绍!
wanchaoa + 3 感谢分享!
豌豆芽儿KD + 1 感谢分享!
wwtpcsuper + 50
candy_shmily + 50

查看全部评分


上一篇:前序遍历 OR 后序遍历
下一篇:sort一个array里的每一个elements不是array本身,复杂度是什么?
我的人缘0
LumiG 发表于 2017-2-15 19:13:16 | 显示全部楼层
本楼: 【顶】   100% (1)
 
 
0% (0)   【踩】
全局: 顶  97% (86)
 
 
2% (2)  踩
个人觉得python绝对是最适合面试的语言了,没有之一,真的。代码简洁,思路清晰,语法糖多,写起来快,可以很好的专注解决问题。我和用java的小伙伴一起刷题,人家看我写的代码,分分钟想屠尽python狗。。。
回复

使用道具 举报

全球28万学生4.7分推荐
我的人缘0
elvenxzy 发表于 2016-10-25 09:18:27 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  100% (4)
 
 
0% (0)  踩
赞一个楼主的分享,我也是刚入门。实在没什么能分享的。楼主把我能想到的都已经说了。
回复

使用道具 举报

我的人缘0
渣渣程序员 发表于 2016-10-25 09:42:24 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  87% (104)
 
 
12% (15)  踩
数据结构还有heapq这样的。

评分

参与人数 1大米 +4 收起 理由
OO0OO + 4 感谢分享!

查看全部评分

回复

使用道具 举报

我的人缘0
sy10017667 发表于 2016-10-25 10:30:11 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  88% (207)
 
 
11% (26)  踩
求python书推荐!看到多少函数算够?
回复

使用道具 举报

我的人缘0
jedihy 发表于 2016-10-25 23:44:00 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  78% (67)
 
 
21% (18)  踩
最后那个插入是o(n)的
回复

使用道具 举报

我的人缘0
 楼主| OO0OO 发表于 2016-10-26 01:23:49 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  95% (124)
 
 
4% (6)  踩
jedihy 发表于 2016-10-25 23:44
最后那个插入是o(n)的

是最后那个数据结构么? 所以是题主也写的是 Close  to,毕竟真心O(1)不太现实
回复

使用道具 举报

我的人缘0
 楼主| OO0OO 发表于 2016-10-26 01:27:14 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  95% (124)
 
 
4% (6)  踩
sy10017667 发表于 2016-10-25 10:30
求python书推荐!看到多少函数算够?

市面上的各种书入门都不错,比如 Learn Python the hard way

其实我觉得过一遍基础的语法就可以开始用起来,然后边用边学吧

然后如果你已经学过,只是要再熟悉语法的话,我推荐刚看到的这个 千行代码入门Python

回复

使用道具 举报

我的人缘0
mayuki 发表于 2016-10-26 01:41:33 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  91% (63)
 
 
8% (6)  踩
那个填list填0的陷阱我就犯过,debug了半天,我只要改一个value连着一串全被改了
回复

使用道具 举报

我的人缘0
justin 发表于 2016-10-26 02:18:26 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  83% (439)
 
 
16% (88)  踩
印象中python 3里range就是generator了,不需要特别指定xrange。

另外collections是神器,就像C++的stl还有Java的collections一样,极大提高效率
回复

使用道具 举报

我的人缘0
jedihy 发表于 2016-10-26 04:20:22 | 显示全部楼层
本楼: 【顶】   0% (0)
 
 
0% (0)   【踩】
全局: 顶  78% (67)
 
 
21% (18)  踩
justin 发表于 2016-10-26 02:18
印象中python 3里range就是generator了,不需要特别指定xrange。

另外collections是神器,就像C++的stl ...

是的,py3 没有xrange的
回复

使用道具 举报

游客
请先登录

本版积分规则

提醒:发帖可以选择内容隐藏,部分板块支持匿名发帖。请认真读完以下全部说明:

■隐藏内容方法 - 不要多加空格: [hide=200]你想要隐藏的内容比如面经[/hide]
■意思是:用户积分低于200则看不到被隐藏的内容
■可以自行设置积分值,不建议太高(200以上太多人看不到),也不建议太低(那就没必要隐藏了)
■建议只隐藏关键内容,比如具体的面试题目、涉及隐私的信息,大部分内容没必要隐藏。
■微信/QQ/电子邮件等,为防止将来被骚扰甚至人肉,以论坛私信方式发给对方最安全。
■匿名发帖的板块和方法:http://www.1point3acres.com/bbs/thread-405991-1-1.html

手机版|小黑屋|一亩三分地留学网

GMT+8, 2018-12-10 15:09

Powered by Discuz! X3

© 2001-2013 Comsenz Inc. Design By HUXTeam

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