- 使用交互式“”运算符
这是一个有用的功能,我们很多人都不知道。 在 Python 控制台中,每当我们测试表达式或调用函数时,结果都会发送到临时名称 “”
>>> 2 + 1
3
>>> _
3
>>> print(_)
3
“”引用上次执行的表达式的输出。 技巧10 序列分解为多个变量,如果分解元素不需要赋值时,也可以用“”占位,如下:
>>> record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
>>> name, _, *phone_numbers = record
>>> name
'Dave'
>>> phone_numbers
['773-555-1212', '847-555-1212']
星号表达式也可以和“_”一起,进行多个元素占位。
>>> record = ('Dave', 'dave@example.com', '773-555-1212', '847-555-1212')
>>> name, email, *_ = record
>>> name
'Dave'
>>> email
'dave@example.com'
- 字典/集合推导
就像我们使用列表推导一样,我们也可以使用字典/集合推导。 它们易于使用且同样有效。 这是一个例子。
>>> testDict = {i: i*i for i in range(10)}
>>> testDict
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25, 6: 36, 7: 49, 8: 64, 9: 81}
>>> testSet = {i*2 for i in range(10)}
>>> testSet
{0, 2, 4, 6, 8, 10, 12, 14, 16, 18}
- 设置文件共享
Python 允许运行 HTTP 服务器,您可以使用它从服务器根目录共享文件。 下面是启动服务器的命令。
(base) D:\>python -m http.server
Serving HTTP on :: port 8000 (http://[::]:8000/) ...
启动http服务,浏览器访问 http://127.0.0.1:8000/ 指定IP地址127.0.0.1和端口80,如下:
(base) D:\>python -m http.server --bind 127.0.0.1 80
Serving HTTP on 127.0.0.1 port 80 (http://127.0.0.1:80/) ...
启动http服务,浏览器访问 http://127.0.0.1/
- 简化if语句
要验证多个值,我们可以通过以下方式进行。
if m in [1,3,5,7]:
代替:
if m==1 or m==3 or m==5 or m==7:
或者,我们可以使用‘{1,3,5,7}’代替‘[1,3,5,7]’作为‘in’运算符。
- 反转字符串/列表的四种方法
>>> testList = [1, 3, 5]
>>> testList.reverse()
>>> print(testList)
[5, 3, 1]
for element in reversed([1,3,5]): print(element)
...
5
3
1
>>> "Test Python"[::-1]
'nohtyP tseT'
>>> [1, 3, 5][::-1]
[5, 3, 1]
- 枚举
使用枚举器,在循环中很容易找到索引。
>>> testlist = [10, 20, 30]
>>> for i, value in enumerate(testlist):
... print(i, ': ', value)
...
0 : 10
1 : 20
2 : 30
- 使用字典存储开关
>>> stdcalc = {
... 'sum' : lambda x,y:x+y,
... 'subtract' : lambda x,y:x-y
... }
>>> print(stdcalc['sum'](9,3))
12
>>> print(stdcalc['subtract'](9,3))
6
- 从两个相关序列创建字典
>>> t1 = (1,2,3)
>>> t2 = (10,20,30)
>>> print(dict(zip(t1,t2)))
{1: 10, 2: 20, 3: 30}
- 搜索字符串中的多个前缀
>>> print("http://www.google.com".startswith(("http://","https://")))
True
>>> print("http://www.google.co.uk".endswith((".com",".co.uk")))
True
- 形成一个统一的列表,不使用任何循环
>>> import itertools
>>> test = [[-1,-2],[30,40],[25,35]]
>>> print(list(itertools.chain.from_iterable(test)))
[-1, -2, 30, 40, 25, 35]
|