0. 标题
善用Python内置函数
代码语言:txt复制作者: quantgalaxy@outlook.com
blog: https://blog.csdn.net/quant_galaxy
欢迎交流
1. 常用的内置函数介绍
1.1 pprint.pprint()
pprint.pprint() 能以自动格式化的方式打印复杂的数据结构。
可以对比下使用 print 和 pprint 这两种不同的效果:
代码语言:python代码运行次数:0复制# using print()
d = {
'apple':[('juice',4),('pie',5)],
'orange':[('juice',4),('cake',5)],
'pear':[('whisky',6),('cake',7)]
}
print(d)
# {'apple': [('juice', 4), ('pie', 5)], 'orange': [('juice', 4), ('cake', 5)], 'pear': [('whisky', 6), ('cake', 7)]}
代码语言:python代码运行次数:0复制# using pprint()
d = {
'apple':[('juice',4),('pie',5)],
'orange':[('juice',4),('cake',5)],
'pear':[('whisky',6),('cake',7)]
}
from pprint import pprint
pprint(d)
# {'apple': [('juice', 4), ('pie', 5)],
# 'orange': [('juice', 4), ('cake', 5)],
# 'pear': [('whisky', 6), ('cake', 7)]}
可以看到,pprint自动做了输出格式化,可以更方便的显示信息。
1.2 zip()
zip() 允许我们一次迭代 2 个或更多的东西,比如:
代码语言:python代码运行次数:0复制# without using zip
fruits = ['apple', 'orange', 'pear']
prices = [4,5,6]
for i in range(len(fruits)):
fruit = fruits[i]
price = prices[i]
print(fruit, price)
# apple 4
# orange 5
# pear 6
如果使用zip,可以用更简洁的代码完成:
代码语言:python代码运行次数:0复制# using zip
fruits = ['apple', 'orange', 'pear']
prices = [4,5,6]
for fruit, price in zip(fruits, prices):
print(fruit, price)
# apple 4
# orange 5
# pear 6
我们也可以一次迭代 3 件或更多事情,比如:
代码语言:python代码运行次数:0复制# using zip to iterate through 3 things at once
fruits = ['apple', 'orange', 'pear']
prices = [4,5,6]
stalls = ['A', 'B', 'C']
for fruit, price, stall in zip(fruits, prices, stalls):
print(fruit, price, stall)
# apple 4 A
# orange 5 B
# pear 6 C
1.3 enumerate()
使用 enumerate() 迭代列表时,可以同时生成索引和元素,先来看自己实现这样的方式:
代码语言:python代码运行次数:0复制# without using enumerate()
fruits = ['apple', 'orange', 'pear']
for i in range(len(fruits)):
fruit = fruits[i]
print(i, fruit)
# 0 apple
# 1 orange
# 2 pear
如果使用 enumerate() 一行完成:
代码语言:python代码运行次数:0复制# using enumerate()
fruits = ['apple', 'orange', 'pear']
for i, fruit in enumerate(fruits):
print(i, fruit)
# 0 apple
# 1 orange
# 2 pear
代码语言:txt复制作者: quantgalaxy@outlook.com
blog: https://blog.csdn.net/quant_galaxy
欢迎交流
1.4 dir()
dir() 函数返回对象的属性列表。
我们可以使用它来检查对象具有哪些方法或属性:
代码语言:shell复制>>> x = 1
>>> dir(x)
['__abs__', '__add__', '__and__', '__bool__', '__ceil__', '__class__', '__delattr__', '__dir__', '__divmod__', '__doc__', '__eq__', '__float__', '__floor__', '__floordiv__', '__format__', '__ge__', '__getattribute__', '__getnewargs__', '__getstate__', '__gt__', '__hash__', '__index__', '__init__', '__init_subclass__', '__int__', '__invert__', '__le__', '__lshift__', '__lt__', '__mod__', '__mul__', '__ne__', '__neg__', '__new__', '__or__', '__pos__', '__pow__', '__radd__', '__rand__', '__rdivmod__', '__reduce__', '__reduce_ex__', '__repr__', '__rfloordiv__', '__rlshift__', '__rmod__', '__rmul__', '__ror__', '__round__', '__rpow__', '__rrshift__', '__rshift__', '__rsub__', '__rtruediv__', '__rxor__', '__setattr__', '__sizeof__', '__str__', '__sub__', '__subclasshook__', '__truediv__', '__trunc__', '__xor__', 'as_integer_ratio', 'bit_count', 'bit_length', 'conjugate', 'denominator', 'from_bytes', 'imag', 'is_integer', 'numerator', 'real', 'to_bytes']
如果我们想快速检查某个对象具有哪些方法/属性,就会非常有用。
1.5 time.sleep()
sleep() 是暂停函数,可以暂停指定的秒,然后继续执行下面的语句。
支持浮点数,浮点数就是毫秒。
代码语言:python代码运行次数:0复制from time import sleep
sleep(5) # our program sleeps for 5 seconds
sleep(10) # our program sleeps for 10 seconds
1.6 sorted()
sorted() 可以排序list,并返回排序后的list:
代码语言:python代码运行次数:0复制fruits = [('apple',5),('orange',6),('pear',4)]
def condition(element):
# this condition function makes the sorted() function
# sort our elements by the second element
# eg. the 5 in ('apple', 5)
return element[1]
x = sorted(fruits, key=condition)
print(x)
# [('pear', 4), ('apple', 5), ('orange', 6)]
可以把 condition 函数,改为使用lambda表达式:
代码语言:python代码运行次数:0复制fruits = [('apple',5),('orange',6),('pear',4)]
x = sorted(fruits, key=lambda x:x[1])
print(x)
# [('pear', 4), ('apple', 5), ('orange', 6)]
lambda表达式我们单独写一篇文章介绍。
1.7 isinstance()
isinstance() 用户判断一个变量是否是一个类型的数据:
代码语言:python代码运行次数:0复制class Animal:
pass
class Dog(Animal):
pass
class GermanShepherd(Dog):
pass
rocky = GermanShepherd()
print(isinstance(rocky, GermanShepherd)) # True
print(isinstance(rocky, Dog)) # True
print(isinstance(rocky, Animal)) # True
print(isinstance(rocky, object)) # True
1.8 os.listdir()
os.listdir() 允许我们遍历一个目录下的所有文件名,比如:
代码语言:python代码运行次数:0复制import os
print(os.listdir('test'))
# ['a.txt', 'b.txt', 'c.txt']
1.9 os.walk()
os.walk() 用于递归的遍历一个目录下的所有内容,返回包含三部分,当前目录,子目录,文件列表(root, subfolders, filenames),
root 是字符串类型,
subfolders 和 filenames 是 list 类型。
比如我们有一个目录结构如下:
代码语言:shell复制/test
/subfolder1
|- a.txt
/subfolder2
|= b.txt
/subfolder3
|- c.txt
|- d.txt
我们使用 os.walk() 访问如下:
代码语言:python代码运行次数:0复制import os
for root, subfolders, filenames in os.walk('test'):
print(root, subfolders, filenames)
# test ['subfolder2', 'subfolder1'] ['d.txt']
# test/subfolder2 ['subfolder3'] ['b.txt']
# test/subfolder2/subfolder3 [] ['c.txt']
# test/subfolder1 [] ['a.txt']
1.10 random.randrange()
返回一个随机数,半闭半开区间,[), 比如:
代码语言:python代码运行次数:0复制from random import randrange
x = randrange(1,11)
print(x)
# a number from 1 to 10 will be printed
随机函数有几种形式:
- random.random(): 随机一个0, 1的浮点数
- random.choice(iterable): 从可迭代元素中随机返回一个
- random.sample(iterable, n): 从可迭代元素中返回n个元素
2. 作者信息
代码语言:txt复制作者: quantgalaxy@outlook.com
blog: https://blog.csdn.net/quant_galaxy
欢迎交流