Python实用小技巧

查看函数运行效率

以下代码会打印出abc函数里调用了几次其它函数, 各用了多少时间, 总共用了多少时间等信息:

# -*- coding: utf-8 -*-
import profile

def abc():
    for i in range(50):
        print("i: %s" % str(i))

profile.run('abc()')

当然,如果只想知道函数运行时间,也可以采用以下方法:

# -*- coding: utf-8 -*-
import time

def abc():
    start = time.time()
    for i in range(50):
        print("i: %s" % str(i))
    end = time.time()
    print("time: %0.3f" % (end - start))

abc()

更多详细用法可参考profile的官方说明

判断字典中键是否存在

以下代码可以判断一个键是否在字典中存在:

# -*- coding: utf-8 -*-
abc = {'a': 'a', 'b': 'b'}

def is_key_exist(key):
    if abc.get(key, None): # 关键代码
        print(key + ' is exist')
    else:
        print(key + ' is not exist')

is_key_exist('b')

元素互换

以下代码可以把a, b的值互换

# -*- coding: utf-8 -*-

a = 3
b = 5
a, b = b, a

初始化列表

在定义列表时进行初始化:

# -*- coding: utf-8 -*-

arr = ['a'] * 5
print(arr) # arr = ['a', 'a', 'a', 'a', 'a']

三元操作符进行条件赋值

# -*- coding: utf-8 -*-

y = 2
x = 10 if y == 1 else 20
print(x) # x = 20

多行字符串

将字符串分为多行并且将整个字符串包含在括号中:

# -*- coding: utf-8 -*-

x = ("select"
     " * "
     "form"
     " abc")

print(x) # select * form abc

存储列表元素到单个变量中

# -*- coding: utf-8 -*-

lst = ['a', 'b', 'c']
x, y, z = lst # x=a y=b z=c

用代码设置断点

使用pdb 模块可以直接在脚本中设置断点:

# -*- coding: utf-8 -*-

import pdb
lst = ['a', 'b', 'c']
x, y, z = lst # x=a y=b z=c
pdb.set_trace() # 代码运行后,执行会在此中断。在控制代码输入'c'后,继续执行。
print(x)

FizzBuzz问题

需求:打印数字1到100,3的倍数打印“Fizz”来替换这个数,5的倍数打印“Buzz”,对于既是3的倍数又是5的倍数的数字打印“FizzBuzz”。

for x in range(1, 101):
    print("fizz"[x % 3 * len('fizz')::] + "buzz"[x % 5 * len('buzz')::] or x)

同时迭代多个列表

zip() 函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的对象,这样做的好处是节约了不少的内存。

# -*- coding: utf-8 -*-

a = [1, 2, 3]
b = [4, 5, 6]
for i, j in zip(a, b):
    print(i + j) # 5, 7, 9

列表转换为字符串

# -*- coding: utf-8 -*-

lst = ['a', 'b', 'c']
print('+'.join(lst)) # a+b+c

迭代分组

需求:有4名选手,分成两两一组进行比赛,有几种分法?代码如下:

# -*- coding: utf-8 -*-

from itertools import combinations
teams = ["player1", "player2", "player3", "player4"]
for game in combinations(teams, 2):
    print(game)
    # ('player1', 'player2')
    # ('player1', 'player3')
    # ('player1', 'player4')
    # ('player2', 'player3')
    # ('player2', 'player4')
    # ('player3', 'player4')

更多用法,请查看itertools库官方说明

更多技巧。。。

以后遇到好的技巧,会不断的往该文章中更新,有需要的朋友可以收藏起来!

猜你喜欢

转载自blog.csdn.net/keynes123fj/article/details/89465452