
作者 | 读芯术
来源 | ID:AI_Discovery
温馨提示:官方宣布自2020年1月一日起将不再支持Python2。这份指南里的大多数例子也只在Python3中适用。如果您还在使用Python2.7,赶快更新吧。如果您使用的是苹果电脑,可以使用Homebrew轻松升级。
您可以直接使用代码来查看Python版本,确保将来不会出现脚本和Python版本不兼容的情况发生。请看示例:
- ifnot sys.version_info > (2, 7):
- # berate your user for running a 10 year
- # python version
- elifnot sys.version_info >= (3, 5):
- # Kindly tell your user (s)he needs to upgrade
- # because you're using 3.5 features
3. 使用IPython

实际上,IPython是一个增强的shell。自动完成功能已足以令人惊叹,但它还有更多功能。我非常喜欢内置的魔术命令。以下是一些例子:·%cd -用于更改当前工作目录·编辑-打开编辑器,并执行您在关闭编辑器后键入的代码· %env — 展示当前环境变量· %pip install [pkgs] — 在交互环境下安装包· %time 和 %timeit — 计算Python代码的执行时间另一个有用的功能是引用前一个命令的输出。In和Out是实际的对象。您可以通过使用Out[3]来进行第三个命令的输出。下载Python命令安装Ipython:
- pip3install ipython
列表推导可以替换丑陋的用于填充列表的for循环。列表推导的基本语法是:
[expression for item in list if conditional ]这是一个最基本的例子,使用数字序列填充列表:- mylist = [i for i inrange(10)]
- print(mylist)
- # [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
同时你还可以用这种表达进行数学运算:
- squares = [x**2for x inrange(10)]
- print(squares)
- # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]
甚至额外创建一个新函数:
- defsome_function(a):
- return (a +5) /2
- my_formula = [some_function(i) for i inrange(10)]
- print(my_formula)
- # [2, 3, 3, 4, 4, 5, 5, 6, 6, 7]
最终,你可以使用“if”来过滤列表。在这个例子中,只保留了能被2整除的值
- filtered = [i for i inrange(20) if i%2==0]
- print(filtered)
- # [0, 2, 4, 6, 8, 10, 12, 14, 16, 18]
5.检查对象的内存使用
使用 sys.getsizeof(),可以检查对象的记忆内存:- import sys
- mylist =range(0, 10000)
- print(sys.getsizeof(mylist))
- # 48
为什么这样一个巨大的列表仅占48字节内存?这是因为range函数返回的类只表现为一个列表。范围比使用实际的数字列表更节省内存。你可以自己使用列表推导创建同一范围内的实际数字列表:
- import sys
- myreallist = [x for x inrange(0, 10000)]
- print(sys.getsizeof(myreallist))
- # 87632
6. 返回多个值

Python中的函数可以返回多个变量,而无需字典、列表或类。它的工作原理如下:
- defget_user(id):
- # fetch user from database
- # ....
- return name, birthdate
- name, birthdate = get_user(4)
对于有限数量的返回值,这是可以的。但是任何超过3个值的内容都应该放到一个(data)类中。
从3.7版开始,Python提供了数据类。与常规类或其他替代方法(如返回多个值或字典)相比,有几个优点:· 一个数据类需要最少的代码· 可以比较数据类,因为已经实现了_eq__· 您以轻易打印一个数据类进行调试,因为也实现了_repr__· 数据类需要类型提示,减少了出错几率下面是一个数据类的例子
- from dataclasses import dataclass
- @dataclass
- classCard:
- rank: str
- suit: str
- card = Card("Q", "hearts")
- print(card == card)
- # True
- print(card.rank)
- # 'Q'
- print(card)
- Card(rank='Q', suit='hearts'
点击这里查看高阶指南 。
一个小技巧就可以省略数行代码。
- a =1
- b =2
- a, b = b, a
- print (a)
- # 2
- print (b)
- # 1
9. 合并字典(Python3.5+)
自Python3.5 以来,合并字典更为简便- dict1 = { 'a': 1, 'b': 2 }
- dict2 = { 'b': 3, 'c': 4 }
- merged = { **dict1, **dict2 }
- print (merged)
- # {'a': 1, 'b': 3, 'c': 4}
如果有重叠的值,来自第一个字典的值将被覆盖。
写这只是其中一种有趣的玩法:
- mystring ="10 awesome python tricks"
- print(mystring.title())
- '10 Awesome Python Tricks'
11. 切割字符串至列表

可以将字符串拆分为字符串列表。在下例中,根据空格切割
- mystring ="The quick brown fox"
- mylist = mystring.split(' ')
- print(mylist)
- # ['The', 'quick', 'brown', 'fox']
12. 从字符串列表中创建一个字符串
与上一个技巧正好相反,在本例中,从字符串列表中创建一个字符串,并在单词间输入空格:- mylist = ['The', 'quick', 'brown', 'fox']
- mystring =" ".join(mylist)
- print(mystring)
- # 'The quick brown fox'
viewrawlist_to_string.py hostedwith ❤ by GitHub
13. 表情
表情要么是欢喜,要么是讨厌,这依表情而定。更重要的是,这在分析社交媒体数据时尤其有用。首先,下载表情模块- pip3install emoji
- import emoji
- result = emoji.emojize('Python is :thumbs_up:')
- print(result)
- # 'Python is 'br/># You can also reverse this:br/>result = emoji.demojize('Python is :thumbs_up:'
viewrawemoji.py hosted with ❤ by GitHub

访问表情包页面查看更多描述和示例
14. 制作列表切片
列表切片的句法:
a[start:stop:step]Start, stop 和 step 都是可选项. 如果未设置,默认值会是· Start值为0· End为字符串末尾· step值为1以下是一个例子:
- # We can easily create a new list from
- # the first two elements of a list:
- first_two = [1, 2, 3, 4, 5][0:2]
- print(first_two)
- # [1, 2]
- # And if we use a step value of 2,
- # we can skip over every second number
- # like this:
- steps = [1, 2, 3, 4, 5][0:5:2]
- print(steps)
- # [1, 3, 5]
- # This works on strings too. In Python,
- # you can treat a string like a list of
- # letters:
- mystring ="abcdefdn nimt"[::2]
- print(mystring)
- # 'aced it'
viewrawlist_slicing.py hosted with ❤ by GitHub
15. 反转字符串和列表
使用上面的切片符号来反转字符串或列表。通过使用负的步进值-1,从而反转元素:
- revstring ="abcdefg"[::-1]
- print(revstring)
- # 'gfedcba'
- revarray = [1, 2, 3, 4, 5][::-1]
- print(revarray)
- # [5, 4, 3, 2, 1]
viewrawreversing_stuff.py hosted with ❤ by GitHub


雷达卡












京公网安备 11010802022788号







