专业编程基础技术教程

网站首页 > 基础教程 正文

Python不常见的8个小技巧(建议收藏)

ccvgpt 2024-11-16 17:26:26 基础教程 7 ℃

持续更新,难道不比追剧来得实在吗???

1. 枚举 - enumerate 可以有参数哦

之前我们这样操作:

Python不常见的8个小技巧(建议收藏)

i = 0
for item in iterable:
    print i, item
    i += 1

现在我们这样操作:

for i, item in enumerate(iterable):
    print i, item

enumerate函数还可以接收第二个参数。就像下面这样:

>>> list(enumerate('abc')) 
[(0, 'a'), (1, 'b'), (2, 'c')] 

>>> list(enumerate('abc', 1)) 
[(1, 'a'), (2, 'b'), (3, 'c')]


2.字典/集合 生成

你也许知道如何进行列表解析,但是可能不知道字典/集合生成。它们简单易用且高效。就像下面这个例子一样:

my_dict = {i: i * i for i in xrange(100)} 
my_set = {i * 15 for i in xrange(100)}

# There is only a difference of ':' in both


# 两者的区别在于字典推导中有冒号


3. 强制浮点除法

from __future__ import division 
result = 1/2
# print(result)

# 0.5

4. 对Python表达式求值

我们都知道eval函数,但是我们知道literal_eval函数么?也许很多人都不知道吧。可以用这种操作:

import ast 
my_list = ast.literal_eval(expr)

来代替以下这种操作:

expr = "[1, 2, 3]"
my_list = eval(expr)

我相信对于大多数人来说这种形式是第一次看见,但是实际上这个在Python中已经存在很长时间了。

5.字符串/数列 逆序

你可以用以下方法快速逆序排列数列:

>>> a = [1,2,3,4]
>>> a[::-1]
[4, 3, 2, 1]
 
# This creates a new reversed list. 

# If you want to reverse a list in place you can do:

 
a.reverse()

这种方式也同样适用于字符串的逆序:

>>> foo = "yasoob"
>>> foo[::-1]
'boosay'

6. 三元运算

三元运算是if-else 语句的快捷操作,也被称为条件运算。这里有几个例子可以供你参考,它们可以让你的代码更加紧凑,更加美观。

[on_true] if [expression] else [on_false]
x, y = 50, 25
small = x if x < y else y

7. Python里面如何拷贝一个对象

标准库中的copy模块提供了两个方法来实现拷贝.一个方法是copy,它返回和参数包含内容一样的对象.

import copy
new_list = copy.copy(existing_list)

有些时候,你希望对象中的属性也被复制,可以使用deepcopy方法:

import copy
new_list_of_dicts = copy.deepcopy(existing_list_of_dicts)

copy(x)
Shallow copy operation on arbitrary Python objects.
 
deepcopy(x, memo=None, _nil=[])
Deep copy operation on arbitrary Python objects.


8. 命名技巧

今天阅读代码,发现一个不错的函数命名方式:

def request(_argv):

就是把所有的参数前面都加上_下划线,这样你在函数体中,一眼就可以看出那些是局部变量,那些是作为参数传入的,类似把全局变量前面加上 g。

持续更新,难道不比追剧来得实在吗???

最近发表
标签列表