📣 Back to School开学季 - VIP通行证5折优惠!蓝莓、Offer多多同步优惠
楼主: LPT
跳转到指定楼层
上一主题 下一主题
收起左侧

[学Python/Perl] 聊一些Python的坑,刷题的时候值得注意

 
🔗
 楼主| LPT 2020-10-31 23:27:58 | 只看该作者
全局:
tonstolearn 发表于 2020-10-31 23:07
我认识很多人选择python 刷题原因有的是java c++都很熟悉 用python 更简洁方便一些,有的是只会python 这种 ...

是的
Java太啰嗦,白板写也很容易出错。有可能你思路很清楚但是手速跟不上。
Python可以把代码写的很干净,比如sum, max, sorted这些你一看就明白怎么回事儿。面试官如果真要你是写,你就自己定义个函数去实现。
但是arr[::-2]这种我觉得都属于奇技淫巧了,有那解释的时间还不如直接写个for-loop
毕竟面试时解释你的思路,one liner也不会直接发offer不是 :)

以上,个人意见
回复

使用道具 举报

🔗
小狼 2020-11-1 00:11:37 来自APP | 只看该作者
全局:
刚试了下,结果不是[4, 4, 4, 4, 4]吗。
回复

使用道具 举报

全局:
LPT 发表于 2020-10-31 08:12:40
我只是举个例子,说update(str)的时候会把str当一个数组去挨个update每个字符的counter :)
Dictionary的update() 应该只输入dict或者有key-value mapping的iterable,输入str他就当成iterable处理了,可不就一个字符串一个字符串算了 :)
回复

使用道具 举报

🔗
忆桓公 2020-11-1 00:18:06 | 只看该作者
全局:
LPT 发表于 2020-10-31 23:17
我说的坑是,一位数组你写[]*5没问题,但是二维数组你还这么写行为就全变了
所以干脆就别这么写 :)

因为一维是对数值的复制,二维是对list的复制,所以二维要用[[0]*n for _ in range(m)]。
就像你复制a=b=0之后可以改它们各自的值,但是a=b=[]就会共用一个list一个道理。
熟悉Python的人用Counter和这个一点问题都没有,不觉得是Python的问题,它很多包都很适合新手!
回复

使用道具 举报

🔗
 楼主| LPT 2020-11-1 01:06:38 | 只看该作者
全局:
忆桓公 发表于 2020-11-1 00:18
因为一维是对数值的复制,二维是对list的复制,所以二维要用[[0]*n for _ in range(m)]。
就像你复制a=b ...

程序员一聊语言,就容易激动 :)
我的意思是说:这种行为就是新手杀,每种语言都有的。
回复

使用道具 举报

🔗
 楼主| LPT 2020-11-1 01:08:13 | 只看该作者
全局:
codyli520 发表于 2020-11-1 00:16
Dictionary的update() 应该只输入dict或者有key-value mapping的iterable,输入str他就当成iterable处理了 ...

对的,原理是这个。不过写的时候,很有可能就忘掉了。
回复

使用道具 举报

全局:
LPT 发表于 2020-10-31 08:20:36
坑都是新手杀
Python刷题很方便,代码也很干净
但是写着写着就会特别依赖built-in lib
我之前面试面试官就看不懂我写的python,解释一下就好了

我最近也在担心以后面试别人看不懂java怎么办。后来想想没事的,让别人解释下就好了,本来面试也不光是看语法对不对,还是思路和沟通最重要。解释代码恰好也可以考察沟通了
回复

使用道具 举报

🔗
 楼主| LPT 2020-11-1 01:47:53 | 只看该作者
全局:
小狼 发表于 2020-11-1 00:11
刚试了下,结果不是[4, 4, 4, 4, 4]吗。

上面的code没有放到代码块里,好像被论坛过滤了,我编辑一下。

1.
  1. arr = [0] * 5
  2. for i in range(0, 5):
  3.     arr[i] = i
  4. print(arr)
复制代码



输出:
[0, 1, 2, 3, 4]

2.
  1. arr = [[0] * 5] * 5
  2. for i in range(0, 5):
  3.     arr[i][0] = i
  4. print(arr)
复制代码


输出:
[[4, 0, 0, 0, 0], [4, 0, 0, 0, 0], [4, 0, 0, 0, 0], [4, 0, 0, 0, 0], [4, 0, 0, 0, 0]]
回复

使用道具 举报

🔗
 楼主| LPT 2020-11-1 01:56:24 | 只看该作者
全局:
一剑终情 发表于 2020-11-1 01:47
我之前面试面试官就看不懂我写的python,解释一下就好了

我最近也在担心以后面试别人看不懂java怎么办。 ...

我同意。我只是觉得Counter这个类的行为,对于没用过的人来说不怎么好解释。而且也不是非用不可的lib。
代码可读性最重要,这个不是Python最大的优势么。 :)
回复

使用道具 举报

🔗
 楼主| LPT 2020-11-1 03:16:13 | 只看该作者
全局:
pubgirl 发表于 2020-10-31 21:22
为什么我从来没有在python上初始化过什么数组。。。不都是把一维的直接reshape吗。。。菜鸡飘过

不太明白一维reshape是什么
二维数组初始化还是挺常用的
比如刚做了一个LC 311 Sparse Matrix Multiplication
另外A*里面拿来存visited也很方便
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册账号
隐私提醒:
  • ☑ 禁止发布广告,拉群,贴个人联系方式:找人请去🔗同学同事飞友,拉群请去🔗拉群结伴,广告请去🔗跳蚤市场,和 🔗租房广告|找室友
  • ☑ 论坛内容在发帖 30 分钟内可以编辑,过后则不能删帖。为防止被骚扰甚至人肉,不要公开留微信等联系方式,如有需求请以论坛私信方式发送。
  • ☑ 干货版块可免费使用 🔗超级匿名:面经(美国面经、中国面经、数科面经、PM面经),抖包袱(美国、中国)和录取汇报、定位选校版
  • ☑ 查阅全站 🔗各种匿名方法

本版积分规则

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