1. complex([real[,imag]])
返回一個復數(shù)磁奖,實部 + 虛部*1j,或者把字符串或者數(shù)字轉(zhuǎn)成復數(shù)形式。
參數(shù)可以是復數(shù)表達式梁钾,也可以是字符串。當參數(shù)是字符串的時候逊抡,數(shù)字與操作符之間不能有空格姆泻。即comple('1 + 2j')
是錯誤的。
print(complex(1, 2))
print(complex(1 + 2j))
print(complex('1+2j'))
# 輸出 1+2j
print(complex(1))
# 輸出 1+0j
滿足:實部 + 虛部*1j 的數(shù)被稱為復數(shù)冒嫡。
a = 1 + 3j
# 求實部
print(a.real)
# 求虛部
print(a.imag)
# 求共軛
print(a.conjugate())
2. abs(x)
返回數(shù)的絕對值拇勃。參數(shù)可以是整數(shù)或者浮點數(shù)。如果參數(shù)是復數(shù)孝凌,返回復數(shù)的模方咆。Python 中虛數(shù)用數(shù)值加上字符 j 的形式表示。要注意 j 前面的數(shù)值不能省略胎许,比如 1j
峻呛。
下面是我寫的簡易版的 abs 函數(shù):
from math import sqrt
def naive_abs(x):
# isinstance 判斷參數(shù)x是否為整數(shù)或浮點數(shù)
if isinstance(x, int) or isinstance(x, float):
if x < 0:
x = - x
# 判斷參數(shù)x是否為復數(shù)
elif isinstance(x, complex):
# x.real 復數(shù)的實部
# x.imag 復數(shù)的虛部
real = x.real
imag = x.imag
# 求復數(shù)的模
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高效編程','關(guān)注':'沒問題','點贊':'必須的','收藏':None}
print(all(a))
# 輸出 True
b = {'公眾號':'Python高效編程','關(guān)注':'沒問題',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高效編程','關(guān)注':'沒問題','點贊':'必須的','收藏':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) 是將當前整數(shù) i 轉(zhuǎn)成對應的 ascii 字符横腿,可以是十進制颓屑,也可以是十六進制,其中0 <= i <= 0x10ffff (1114111)耿焊。其對應的逆操作為 ord(i)揪惦,i 為 ascii 字符。
下面的函數(shù)演示如何求一個可迭代對象的 ascil字符 或者其對應的數(shù)值罗侯。注意函數(shù) ordplus 器腋,參數(shù) 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() 函數(shù)返回的是迭代器垂睬,同樣是可迭代對象媳荒。每次迭代的元素,都包含元素在序列里的序號(strat 默認值為 0) 和元素對應值驹饺。因此钳枕,我們可以用 for 循環(huán)獲取返回值。
等價于:
def enumerate(sequence, start=0):
n = start
for elem in sequence:
yield n, elem
n += 1
8.eval(expression, globals=None,locals=None)
參數(shù)為字符串赏壹、可選的全局變量和局部變量鱼炒。如果為可選參數(shù)賦值,globals 參數(shù)必須是字典蝌借,而 locals 參數(shù)可以是任意的映射對象昔瞧。
expression 參數(shù)被解析為 Python 表達式(更專業(yè)地說指蚁,條件列表),而且使用 globals 和 locals 字典作為全局與局部命名空間自晰。如果 globals 字典存在但不包括關(guān)鍵字__builtins__
對應值凝化,對內(nèi)置模塊__builtins__
的字典的引用就會在表達式被解析前被插入到關(guān)鍵字下面。這意味著酬荞,表達式一般可以接觸 builtins
模塊搓劫,并且在有限的環(huán)境傳播。如果 locals 字典被省略混巧,默認為 globals 字典枪向。如果兩個字典都被省略,表達式在 eval() 函數(shù)被調(diào)用的環(huán)境下執(zhí)行咧党。返回值是表達式被計算的結(jié)果秘蛔。語法錯誤被當作異常處理。
這個函數(shù)還被用來執(zhí)行任意的代碼對象(比如通過 compile() 創(chuàng)建的對象)
9. filter(function, iterable)
由可迭代對象的元素構(gòu)造一個迭代器傍衡,函數(shù)返回 True缠犀。可迭代對象可能是一個序列聪舒、支持迭代的容器或者一個迭代器。如果函數(shù)為 None虐急,默認為恒等函數(shù)箱残。也就是說,可迭代對象的所有 False 元素將會被移除(filter(None, a))
注意到,filter(function, iterable) 等同于生成器表達式 (item for item in iterable if function(item)) 如果 function 不為 None止吁,和 (item for item in iterable if item),如果函數(shù)為 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])
用于格式化輸出字符串。
把值轉(zhuǎn)變?yōu)橛?format_spec格式化表達俄删。對 format_spec的解釋要取決于參數(shù) value 的類型宏怔,但是大多數(shù)內(nèi)置類型采用標準格式語法。
默認的 format_spec 是一個空字符串畴椰,通常與 str(value) 有相同作用臊诊。
format(value, format_spec)
被解釋成 type(value).__format__(value, format_spec)
。后者在搜索值的 __format__()
方法時繞過實例字典斜脂。如果方法搜索到達對象且 format_spec不為空或者format_spec或者返回值不為字符串抓艳。