1. complex([real[,imag]])
返回一个复数,实部 + 虚部*1j,或者把字符串或者数字转成复数形式。
参数可以是复数表达式,也可以是字符串。当参数是字符串的时候,数字与操作符之间不能有空格。即comple('1 + 2j')
是错误的。
print(complex(1, 2))
print(complex(1 + 2j))
print(complex('1+2j'))
# 输出 1+2j
print(complex(1))
# 输出 1+0j
满足:实部 + 虚部*1j 的数被称为复数。
a = 1 + 3j
# 求实部
print(a.real)
# 求虚部
print(a.imag)
# 求共轭
print(a.conjugate())
2. abs(x)
返回数的绝对值。参数可以是整数或者浮点数。如果参数是复数,返回复数的模。Python 中虚数用数值加上字符 j 的形式表示。要注意 j 前面的数值不能省略,比如 1j
。
下面是我写的简易版的 abs 函数:
from math import sqrt
def naive_abs(x):
# isinstance 判断参数x是否为整数或浮点数
if isinstance(x, int) or isinstance(x, float):
if x < 0:
x = - x
# 判断参数x是否为复数
elif isinstance(x, complex):
# x.real 复数的实部
# x.imag 复数的虚部
real = x.real
imag = x.imag
# 求复数的模
x = sqrt(real ** 2 + imag ** 2)
else :
return '请输入 int float complex'
return x
print(abs(3+4j))
print(naive_abs(3+4j))
# 输出 5.0
print(abs(-6))
print(naive_abs(-6))
# 输出 6
3. all(iterable)
如果可迭代对象(如列表,字典等)中的全部元素都为真值,或者可迭代对象为空,返回True
。等价于:
def all(iterable):
for element in iterable:
if not element:
return False
return True
举例如下:
a = {'公众号':'Python高效编程','关注':'没问题','点赞':'必须的','收藏':None}
print(all(a))
# 输出 True
b = {'公众号':'Python高效编程','关注':'没问题',None:'必须的','收藏':'小事情'}
print(all(b))
# 输出 False
c = []
print(all(c))
# 输出 True
首先要明确一点,Python 中字典迭代的元素是 key 而不是 value,所以 all(a) 输出的值是 True,all(b) 输出的值为 False。而空列表输出值是 True。
4. any(iterable)
如果可迭代对象中,任何一个元素为真,就返回 True。如果可迭代对象为空,返回 False。等价于:
def any(iterable):
for element in iterable:
if element:
return True
return False
举个例子:
a = {'公众号':'Python高效编程','关注':'没问题','点赞':'必须的','收藏':None}
print(any(a))
# 输出 True
b = {None:'Python高效编程',None:'没问题',None:'必须的',None:'小事情'}
print(any(b))
# 输出 False
c = {}
print(any(c))
# 输出 False
5. bool([x])
返回 True or False
print(bool(1))
# 输出 True
print(bool(0))
# 输出 False
6. chr(i) 与 ord(i)
chr(i) 是将当前整数 i 转成对应的 ascii 字符,可以是十进制,也可以是十六进制,其中0 <= i <= 0x10ffff (1114111)。其对应的逆操作为 ord(i),i 为 ascii 字符。
下面的函数演示如何求一个可迭代对象的 ascil字符 或者其对应的数值。注意函数 ordplus ,参数 x 中的每一个元素必须是单个字符,如果是列表,形式如下:[‘P’ , ‘y’, ‘t’ , ‘h’, ‘o’ , ‘n’]。
def chrplus(x):
chr_string = ''
for elem in x:
chr_string += chr(elem)
return chr_string
def ordplus(x):
ord_list = []
for elem in x:
ord_list.append(ord(elem))
return ord_list
x = 'Python高效编程'
temp = ordplus(x)
print(temp)
# 输出[112, 121, 116, 104, 111, 110,
# 39640, 25928, 32534,31243]
init = chrplus(temp)
print(init)
7.enumerate(iterable, start=0)
返回 enumerate
对象。迭代对象必须是序列,迭代器,或者其他支持迭代的对象。enmerate() 函数返回的是迭代器,同样是可迭代对象。每次迭代的元素,都包含元素在序列里的序号(strat 默认值为 0) 和元素对应值。因此,我们可以用 for 循环获取返回值。
等价于:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
8.eval(expression, globals=None,locals=None)
参数为字符串、可选的全局变量和局部变量。如果为可选参数赋值,globals 参数必须是字典,而 locals 参数可以是任意的映射对象。
expression 参数被解析为 Python 表达式(更专业地说,条件列表),而且使用 globals 和 locals 字典作为全局与局部命名空间。如果 globals 字典存在但不包括关键字__builtins__
对应值,对内置模块__builtins__
的字典的引用就会在表达式被解析前被插入到关键字下面。这意味着,表达式一般可以接触 builtins
模块,并且在有限的环境传播。如果 locals 字典被省略,默认为 globals 字典。如果两个字典都被省略,表达式在 eval() 函数被调用的环境下执行。返回值是表达式被计算的结果。语法错误被当作异常处理。
这个函数还被用来执行任意的代码对象(比如通过 compile() 创建的对象)
9. filter(function, iterable)
由可迭代对象的元素构造一个迭代器,函数返回 True。可迭代对象可能是一个序列、支持迭代的容器或者一个迭代器。如果函数为 None,默认为恒等函数。也就是说,可迭代对象的所有 False 元素将会被移除(filter(None, a))
注意到,filter(function, iterable) 等同于生成器表达式 (item for item in iterable if function(item)) 如果 function 不为 None,和 (item for item in iterable if item),如果函数为 None。
filter 返回生成器,如果想得到列表,要加上 list 操作。
a = [1, 3, -5, 12, 7, -3, -1, 0]
list(filter(lambda x: x < 0, a))
# 输出为: [-5, -3, -1]
10. format(value[,format_spec])
用于格式化输出字符串。
把值转变为由 format_spec格式化表达。对 format_spec的解释要取决于参数 value 的类型,但是大多数内置类型采用标准格式语法。
默认的 format_spec 是一个空字符串,通常与 str(value) 有相同作用。
format(value, format_spec)
被解释成 type(value).__format__(value, format_spec)
。后者在搜索值的 __format__()
方法时绕过实例字典。如果方法搜索到达对象且 format_spec不为空或者format_spec或者返回值不为字符串。