查看: 3582| 回复: 7
跳转到指定楼层
上一主题 下一主题
收起左侧

[学Python/Perl] 长期更新~通过刷题学python3

全局:

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

您需要 登录 才可以下载或查看附件。没有帐号?注册账号

x
最近趁着刚刚学期结束有了很多空闲时间,准备利用这段时间刷题然后顺便学python,然后开个帖子来记录每天学到的知识!之前一直都是很零散的在写python,这次准备只用python刷题,然后遇到有意思的写法和好用的写法就在这里分享出来。

上一篇:有没有研究对抗攻击的大佬,求有偿辅导一个project
下一篇:Binary tree path sum 加不加[:]的区别
推荐
ovarer 2020-5-4 05:55:59 | 只看该作者
全局:
没有需求的话应该可以不用管2了吧?可以了解下2to3,__future__之类的以防万一

我电脑都没有python2了,python指向python3

感觉最方便的就是python3自带venv
回复

使用道具 举报

全局:
Python2=Windows 7, Python3=Windows 10
回复

使用道具 举报

推荐
 楼主| 疑座城池 2020-5-4 04:43:33 | 只看该作者
全局:
【五月三日】
不知道有没有和我一样特别好奇python 2和 3的区别的,之前我一直都不了解这两者有什么具体的异同,今天决定用python3来写题,所以顺便又做了些research,这边列出来一些比较重要和有意思的点:
1. Python 3 修复了很多 Python 2的bug,所以没有能够backward compatible, 也就是说很多的Python2 代码没办法直接当作Python3 来跑;对比C++ 20 和 C++ 11,Python 3 是刻意的人为设计成backward incompatible的。
2. Python 3 修改了一些常用的function, 比如Python 2 中很常用的xrange() 在 Python 3 里被 range() 所取代。同样的还有Print。
3. Python 3 的语法更加友好易懂。
4. Python 3 中的一些功能被包括到了Python 2.7 中。

这些只是我从网上很简略的查到的信息,不知道有没有更深刻接触过python2/3的大佬能出来讲讲?很想知道industry是怎么看待Python 2 和 Python 3 的。

Sources:
https://www.python.org/download/releases/3.0/
https://stackoverflow.com/questions/9066956/why-is-python-3-not-backwards-compatible
https://www.guru99.com/python-2-vs-python-3.html
https://www.educative.io/edpresso/what-does-xrange-function-do-in-python
回复

使用道具 举报

🔗
 楼主| 疑座城池 2020-5-5 01:45:17 | 只看该作者
全局:
本帖最后由 疑座城池 于 2020-5-5 01:49 编辑

【五月四日】
今天刷到了一道Number Complement https://leetcode.com/problems/number-complement/
题其实不难,就是做一个bitwise的颠倒。不过这个过程中接触到了python的一些bitwise的operator,以及一些在bit munipulation中好用的小招数,这边列出来给大家:
Python bitwise operators: https://www.geeksforgeeks.org/python-bitwise-operators/
这里是一个小表格:
&        Bitwise AND                x & y
|        Bitwise OR                        x | y
~        Bitwise NOT                ~x
^        Bitwise XOR                x ^ y
>>        Bitwise right shift        x>>
<<        Bitwise left shift                x<<
以及一些好用的bitwise的小招数:
1. 像这道题的颠倒bit,可以通过寻找同位数的11111 mask,然后进行一个 XOR 来获取颠倒的bit。例如: 1011, 我们可以用1111 XOR 1011 = 0100
2. 还有一个XOR的小招数是 https://leetcode.com/problems/single-number/ 这种情况可以利用,因为同一个integer xor 自己等于 0,并且 xor 具备associative的特性,也就是说 A XOR (B XOR C) ==  (A XOR B) XOR C
以single number这题为例,如果我们有[1,4,5,4,3,5,1]这些数字,要找到3这个single number,那么可以通过 1 XOR 4 XOR 5 XOR 4 XOR 3 XOR 4 XOR 1 => 1 XOR 1 XOR 4 XOR 4 XOR 5 XOR 5 XOR 3 => 0 XOR 0 XOR 0 XOR 3 = 3 来获得。
回复

使用道具 举报

全局:
这些题目有现成答案没 ? 还是得自己做 ?
回复

使用道具 举报

🔗
 楼主| 疑座城池 2020-5-11 09:20:59 | 只看该作者
全局:
【五月十日】
xrange() vs range()
不知道有没有人也发现leetcode上面的solution里,xrange和range都会在python的解法里出现?我一直好奇,今天来特意研究了一下这两个用法有什么区别:
https://www.pythoncentral.io/python-generators-and-yield-keyword/
本质上来讲,两者从使用的角度可以互相替换使用,不过xrange不会一次性生成一个list来储存数据(range是一次性生成一个list来储存数据),而是利用python的generator来按照需要生成。
https://www.pythoncentral.io/python-generators-and-yield-keyword/
python的解法用xrange是为了节约memory嘛?
回复

使用道具 举报

🔗
Huadx 2020-5-11 20:07:05 来自APP | 只看该作者
全局:
疑座城池 发表于 2020/05/11 09:20:59
【五月十日】
xrange() vs range()
不知道有没有人也发现leetcode上面的solution里,...
py3里用不到xrange了 range也节约空间
回复

使用道具 举报

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

本版积分规则

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