Python之路Python內置函數、zip()、max()、min()


Python之路Python內置函數、zip()、max()、min()

一、python內置函數

abs()

求絕對值

例子

print(abs(-2))

all()

把序列中每一個元素做布爾運算,如果全部都是true,就返回true,

但是如果是空字符串、空列表也返回true

例子

print(all([1,2,'1','']))

 

  

輸出結果

False

 

  

 

例子2

print(all(''))

 

輸出結果

True

 

  

 

any()

把序列中每一個元素做布爾運算,如果有一個為true就返回true,

但是有兩個false還是false

 

例子

print(any([0,''])) print(any([0,'',1]))

 

  

輸出結果

False
True

 

  

 

bin()

把十進制轉換為二進制

例子

print(bin(3))

 

輸出結果

0b11

 

  

分析:其中“0b"代表二進制

 

bool()

判斷布爾類型的,返回True或者False

 

bytes()

以一個字節的形式輸出數據,這里的bytes是不可變數據類型

如果是整數,就輸出長度為該整數長度的字節組

例子

print(bytes(0)) print(bytes(2)) print(bytes(5))

 

  

輸出結果

b''b'\x00\x00'b'\x00\x00\x00\x00\x00'

 

如果是字符串,則必須制定編碼方式進行編碼

例子

name='你好'
print(bytes(name,encoding='utf-8')) print(bytes(name,encoding='utf-8').decode('utf-8'))

 

  

輸出結果

b'\xe4\xbd\xa0\xe5\xa5\xbd'<br>你好

 

分析:這里的第一行輸出就是以utf-8的方式對“你好”進行編碼,是二進制模式下的十六進制編碼,這里是十六進制的形式,utf-8中三個字節代表一個漢字,所以前3個字節代表的是“你”

第二行輸出的是對十六進制的字節進行解碼,用“utf-8”的形式重新解碼,所以這里被還原成“你好”

 

例子

name='你好'
print(bytes(name,encoding='gbk')) print(bytes(name,encoding='gbk').decode('gbk'))

 

  

輸出結果

b'\xc4\xe3\xba\xc3' 你好

 

  

 

分析:第一行輸出是用"gbk"方式對“你好”進行編碼,由於gbk是2個字符代表一個漢字,所以這里可以看到,前2個代表一個漢字,后2個代表一個漢字,

同樣的這里也可以被解碼重新還原為原字符串

 

bytearray()

以一個字節組的形式輸出數據

用法與bytes()類似,但這里這個數組里的元素是可變的,bytes是不可變數據類型,而bytearray像名稱一樣可使用append等方法;

 

chr()

參數是(0~255)整數,返回的其實是ASCII碼對應的字符

 

dict()

創建字典的函數

例子

print(dict( a = "1",b = "2" ))

 

輸出結果

{'a': '1', 'b': '2'}

 

分析:這種創建字典的方式key只能是字符串,不能是數字、布爾值等,創建出的字典key是寫入等式的前面,等式后面寫的是value

 

例子2

print(dict([("a",1),(2,3)]))

 

輸出結果

{'a': 1, 2: 3}

 

 

分析:這里是用可迭代對象創造字典,即通過二元組列表創建

 

dir()

打印某一個對象下面都有哪些方法

例子

print(dir(str))

 

輸出結果

['__add__', '__class__', '__contains__', '__delattr__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__getnewargs__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__mod__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__rmod__', '__rmul__', '__setattr__', '__sizeof__', '__str__', '__subclasshook__', 'capitalize', 'casefold', 'center', 'count', 'encode', 'endswith', 'expandtabs', 'find', 'format', 'format_map', 'index', 'isalnum', 'isalpha', 'isdecimal', 'isdigit', 'isidentifier', 'islower', 'isnumeric', 'isprintable', 'isspace', 'istitle', 'isupper', 'join', 'ljust', 'lower', 'lstrip', 'maketrans', 'partition', 'replace', 'rfind', 'rindex', 'rjust', 'rpartition', 'rsplit', 'rstrip', 'split', 'splitlines', 'startswith', 'strip', 'swapcase', 'title', 'translate', 'upper', 'zfill']

 

divmod()

實現a除以b,然后返回商與余數的元組。如果兩個參數a,b都是整數,那么會采用整數除法,結果相當於(a//b, a % b)。如果a或b是浮點數,相當於(math.floor(a/b), a%b)。

 

例子

print(divmod(10,3))

 

輸出結果

(3, 1)

 

 

enumerate()

將一個可遍歷的數據對象(如列表、元組或字符串)組合為一個索引序列,同時列出數據和數據下標,一般用在 for 循環當中。

語法

  
enumerate(seq, [start=0])

seq--一個序列或者可迭代對象,start 下標的開始位置

 

例子

li = ["nicholas","jack","pony"] for i in enumerate(li,1): print(i)

 

  

輸出結果

(1, 'nicholas') (2, 'jack') (3, 'pony')

 

  

 

eval()

將字符串str當成有效的表達式來求值並返回計算結果。

例子

#字符串轉換成字典
print(eval('{"nick":1,"jack":2}'))

 

  

輸出結果

{'nick': 1, 'jack': 2}

 

 

計算字符串里的表達式的值

例子

x,y = 1,2
print(eval('x + y'))

 

  

輸出結果

3

 

hash()

用來做哈希運算的,只要可hash就是不可變數據類型

不可hash的就是可變數據類型

哈希是一種算法,把文件內容進行一個運算,最終得出一個值

得出的結果長度是固定的,不能根據結果反推原來的內容

本函數返回對象的哈希值。返回的哈希值是使用一個整數表示,通常使用軟件校驗。

 

例子

name = "nick"
print(hash(name)) name = "nicholas"
print(hash(name))

 

  


輸出結果

5166927391536352230

 

分析:對name進行哈希運算返回一個值,如果中途被修改,哈希值也會變化

 

help()

查看幫助,查看某個函數怎么用

例子

print(help(dir))

 

查看dir的用法

 

hex()、oct()、bin()

bin()將十進制轉換為二進制

hex()將十進制轉換為十六進制

oct()將十進制轉換為八進制

 

isinstance()

 

函數來判斷一個對象是否是一個已知的類型,類似 type()。

例子

print(isinstance(1,int)) print(isinstance("a",str))

 

  

輸出

True
 
True

 

  

分析:判斷1是不是int類型,判斷“a”是不是字符串類型

 

locals()、globals()

這兩個函數主要提供,基於字典的訪問局部和全局變量的方式。

globals打印全局變量,還有一些系統提供的全局變量

locals打印局部變量

 

例子

{'b': 'nick '} ---------------- {'__name__': '__main__', '__doc__': None, '__package__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x002EA550>, '__spec__': None, '__annotations__': {}, '__builtins__': <module 'builtins' (built-in)>, '__file__': 'D:/06python/exercise/test2.py', '__cached__': None, 'a': 2, 'test': <function test at 0x02116CD8>}

 

  

分析:這里print(locals())打印的是{'b': 'nick '},獲取的是局部變量,

print(globals())在輸出的最后獲取了'a': 2,其他都是系統提供的全局變量

 

 

ord()

ord() 函數是 chr() 函數(對於8位的ASCII字符串)或 unichr() 函數(對於Unicode對象)的配對函數,它以一個字符(長度為1的字符串)作為參數,返回對應的 ASCII 數值

 

pow()

pow(x,y)方法返回 xy(x的y次方) 的值。

pow(x,y,z)方法是x的y次方得到一個值,之后再用這個值對z進行取余

例子

print(pow(2,5,3)) print(pow(2,5))

 

  

輸出結果

232

 

  

 

reversed()

reversed函數返回一個反轉的迭代器。即取反,取反的對象可以是列表、字符串、元組,或者range

例子

print(reversed([1,2,3,4])) print(list(reversed([1,2,3,4])))

 

  

輸出結果

<list_reverseiterator object at 0x002EA570>[4, 3, 2, 1]

 

分析:第一行輸出,直接打印reversed輸出的是一個反轉的迭代器,要用list方法可以進行顯示列表。

 

round()

返回浮點數x的四舍五入值。

 

set()

創建一個集合

 

 

slice()

切片對象,主要用在切片操作函數里的參數傳遞。

語法

slice(start, stop[, step])

例子

l = "hello world !" s1 = slice(0,4) print(l[s1])

 

  

輸出結果

hell

例子2

l = "aeiou world !" s2 = slice(0,4,2) print(l[s2])

 

  

輸出結果

1

 

  

分析:這里加了步長。

 

sorted()

對所有可迭代的對象進行排序操作。內建函數 sorted 方法返回的是一個新的 list,而不是在原來的基礎上進行的操作。

list 的 sort 方法返回的是對已經存在的列表進行操作

 

sorted 方法不能針對不同類型進行排序

 

例子

l = [2,1,3,5,8] print(sorted(l))

 

  

輸出結果

[1, 2, 3, 5, 8]

 

 

sorted()語法

  
sorted(iterable, key=None, reverse=False)  
  • iterable -- 可迭代對象。key -- 主要是用來進行比較的元素,只有一個參數,具體的函數的參數就是取自於可迭代對象中

  • reverse -- 排序規則,reverse = True 降序 , reverse = False 升序(默認)。

    例子

    people=[ {'name':'nicholas','age':18}, {'name':'jack','age':53}, {'name':'pony','age':46}, {'name':'richard','age':44}, ] print(sorted(people,key = lambda  dic:dic["age"]))

     

      

輸出結果

[{'name': 'nicholas', 'age': 18}, {'name': 'richard', 'age': 44}, {'name': 'pony', 'age': 46}, {'name': 'jack', 'age': 53}]

 

 

str()

將任意類型轉換為字符串

 

sum()

對系列進行求和計算。

語法

  
sum(iterable[, start])

例子

li = [1,2,3,4,5] print(sum(li)) print(sum(li,2))

 

  

輸出結果

15
17

 

  

 

分析:第二行輸出是先對列表求和,再加上參數2再次求和。

 

type()

查看某一對象的數據類型

例子

msg = "123"
if type(msg) is str : msg = int(msg) res = msg + 5
    print(res)

 

  

 

 

 

vars()

對象object的屬性和屬性值的字典對象。

查看對象的屬性和值,如果沒有參數和locals功能一樣。

如果有就顯示該對象的所有方法名

print(vars(int))

 

 

二、zip()

 

用於將可迭代的對象作為參數,將對象中對應的元素打包成一個個元組,然后返回由這些元組組成的列表或者字典。

zip()可以傳2個參數,只要是序列就可以(列表、元組、字符串)

例子

print(zip(("a","b","c"),(1,2,3))) print(list(zip(("a","b","c"),(1,2,3)))) print(list(zip(("a","b","c"),(1,2,3,4)))) print(list(zip(("a","b","c","d"),(1,2,3))))

 

  



輸出結果

<zip object at 0x0216EB98> [('a', 1), ('b', 2), ('c', 3)] [('a', 1), ('b', 2), ('c', 3)] [('a', 1), ('b', 2), ('c', 3)]

 

  

分析:第一行輸出的是zip的對象,要轉換為列表用list的方法

zip的左右兩個參數序列是一一對應的關系,如果有多的自動忽略

例子2

p={'name':'nicholas','age':18,'gender':'man'} print(list(zip(p.keys(),p.values())))

 

  



輸出結果

[('name', 'nicholas'), ('age', 18), ('gender', 'man')]

 

 

分析:這樣就可以把字典中的元素提取出來

 

例子

print(dict(zip(("a","b","c"),(1,2,3))))

 



輸出結果

{'a': 1, 'b': 2, 'c': 3}

 

分析:這里可以直接將zip對象轉為字典。

 

三、max() 、min()

max()求最大的值

 

例子

dic = {"age1":18,"age4":25,"age2":19,"age3":28} print(max(dic)) print(max(dic.values())) print(max(zip(dic.values(),dic.keys())))

 

 

 
          

輸出結果

age4 28 (28, 'age3')

 

  

分析:print(max(dic))語句默認比較的是字典的key,進行字符串的比較,一個字符一個字符的比較,根據字符的ASCII碼進行比較

第二行輸出print(max(dic.values())),比較的是字典的value,直接輸出最大的value

第三行輸出是首先將字典用zip方法將字典的value和key組成一個一一對應的元組,然后直接比較這個元組的大小

具體

dic = {"age1":18,"age4":25,"age2":19,"age3":28} v = zip(dic.values(),dic.keys()) #這里也是一個可迭代對象
for i in v: print(i)

 

  



輸出結果

(18, 'age1') (25, 'age4') (19, 'age2') (28, 'age3')

 

  

這里通過for循環可以看出zip(dic.values(),dic.keys())是一個元組

 

例子2

l = [(5,"a"),(3,"b"),(2,"c")] print(max(l))

 



輸出結果

(5, 'a')

 

分析:這里是從第一個值進行比較,5、3、2進行比較,如果有結果,后面的就不用比較了

 

例子3

l = ["a18","b21","c5"] print(max(l))

 

  



輸出結果

 

 

 

 

 

  

分析:這里也是一個字符一個字符的比較。

 

max()的高級用法

max(iterable,key = func)

iterable--可迭代對象,func--對對象的元素處理邏輯

例子

people=[ {'name':'pony','age':1000}, {'name':'jack','age':10000}, {'name':'richard','age':9000}, {'name':'nick','age':18}, ] print(max(people,key = lambda x:x["age"]))

 

  



輸出結果

{'name': 'jack', 'age': 10000}

 

分析:這里是對列表中每個元素進行for循環,即字典進行取出“age”對應的value進行比較,同時輸出value最大值的元素,與map函數進行for循環類似。

x["age"]是對列表的每個元素進行索引,而非對列表進行索引,因為這個max()函數對要處理的可迭代對象進行了類似for循環處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM