1. 程式人生 > >python筆記-5(內置函數)

python筆記-5(內置函數)

全局 png 給定 exe min most spa post 說明

一、內置函數

1、abs()--取絕對值函數

print(abs(-0.11))
x=-0.01
y=0.11
print(abs(x),abs(y))
------------------------------
0.11
0.01 0.11

2、all()--判斷可叠代對象內是否有0或false或元素為空

all(iterable)如果非可叠代對象,則會報錯

>>> all(123)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: int
object is not iterable print(all([0,-5,-1]))#0為假,負數為真 print(all([-1,-2,-3])) print(all([1,2,3,false])) print(all([1,2,3,false,‘‘]))#有空對象 print(all([1,2,3,False]))#有False print(all([])) print(all({0:1})) print(all({0:1})) print(all({})) print(all(‘‘)) #all 可叠代的對象內 如果存在假的 則返回false。此時空的為真 #any 可叠代的對象內 如果存在真的 則返回true 此時空的為假
---------------------------------- False True True False False True True False True True

3、any()---判斷給定的可叠代參數 iterable 是否全部為空對象,如果都為空、0、false,則返回 False,如果不都為空、0、false,則返回 True。

any 與all用法相似 需要用Iterable
any(Iterable)

print(any([0,1,3]))
print(any([]))
print(any([-1]))
print(any([0]))
print(any([0,-1]))
------------------------------ True False True False True

4、bin()--- 將數字轉換為二進制

print(bin 將數字轉換為二進制)
print(bin(255))
print(bin(-255))
print(bin(4))
print(bin(-4))
----------------------
0b11111111
-0b11111111
0b100
-0b100

5、bool()---布爾值判斷

空和0 為假,需要註意0的情況,如list[0]、dict{0:123}這種情況為真

print(bool(0))#
print(bool(1))
print(bool(-1))
print(bool([]))#
print(bool([0]))
print(bool([1]))
print(bool([-1]))
print(bool({}))#
print(bool({0:01}))
print(bool({1:xx}))
print(bool({-1:xxx}))
#布爾值判斷 空和0為假
-------------------------------------------------
False
True
True
False
True
True
True
False
True
True
True

6、bytes()---與encode方法類似

需要理解的是python中str格式與bytes格式b‘xxxxx’、r‘xxxxx‘、‘\uxxxxxx’這些格式的使用

bytes的作用為將字符串轉碼為bytes類型,實際和encode的效果一樣。

astr=你好
print(bytes(astr,encoding=utf-8))#將一個字符串裝換為b類型
print(astr.encode(utf-8))
print(astr.encode(gbk))
print(astr.encode(utf-8).decode(utf-8).encode(gbk))
# str (unicode) -> encode -> utf -8 -> decode-> unicode -> str -> encode -> gbk
print(astr.encode(unicode_escape))
print(bytes(astr,encoding=unicode_escape))
print(astr.encode(unicode_escape).decode(unicode_escape))
print(astr.encode(unicode_escape).decode())
-----------------------------------------------
b\xe4\xbd\xa0\xe5\xa5\xbd
b\xe4\xbd\xa0\xe5\xa5\xbd
b\xc4\xe3\xba\xc3
b\xc4\xe3\xba\xc3
b\\u4f60\\u597d
b\\u4f60\\u597d
你好
\u4f60\u597d

7、bytearrary()----很少用到

可以對byte類型數據進行修改,了解即可

c=bytes(abc,encoding=utf-8)
print(c,c.capitalize())
print(c)#輸出c 發現大小寫沒有改變
c=c.capitalize()
#c字符串不能被改變,只能重新覆蓋
print(c)
d=bytearray(abc,encoding=utf-8)
print(c,d)
d[1]=70
print(c,d,d[1])
#c[1]=44 TypeError: ‘bytes‘ object does not support item assignment
print(c,d)
-------------------------------------
babc bAbc
babc
bAbc
bAbc bytearray(babc)
bAbc bytearray(baFc) 70
bAbc bytearray(baFc)

8、callable()---是否可調用

#callable()#判斷是否可調用 變量後面加()表示調用,函數可以調用,類可以調用。列表字典不能調用

print(callable({}))
----------------------
False

9、chr()--- ASCII碼轉換成字符 對應ord() 字符轉為ASCII碼

知道A 65 a97 相差32

print(chr(100))
print(chr(96))
print(chr(70))
print(ord(A)) #大A的ascii碼和小a差32
print(ord(a))
-----------------------------------
d
`
F
65
97

技術分享圖片

10、compile()---僅做個了解 不常用 將str裝換成可執行的形式

平時看上去和直接使用exec、eval沒什麽區別

print(--------------------)str = "3 * 4 + 5"
a = compile(str,‘‘,eval)
x=eval(a)
print(x)
str = "for i in range(0,10,3): print(i)"
c = compile(str,‘‘,exec) # 編譯為字節代碼對象
exec(c)
print(--------------------)
exec(str)
-------------------------

--------------------
17
0
3
6
9
--------------------
0
3
6
9

11、complex()---復數 此處不做了解 一般用不著

12、dict()---生成一個空字典

a=dict()
b={}#a、b兩種生成方式實際沒有區別
print(type(a),a,len(a))
print(type(b),b,len(b))
-------------------------------
<class dict> {} 0
<class dict> {} 0

13、dir()---查看一個變量有哪些內部方法 用於查詢

>>> import time
>>> dir(time)
[_STRUCT_TM_ITEMS, __doc__, __loader__, __name__, __package__, __spec__, altzone, asctime, clock, ctime, daylight, get_clock_info, gmtime, localtime, mktime, monotonic, perf_counter, process_time, sleep, strftime, strptime, struct_time, time, timezone, tzname]
>>>

14、divmod()---求商取余 第一個為商 第二個為余數

print(divmod(10,3),divmod(100,25),divmod(3,5))#返回一個元組 第一個元素為商,第二個為余數
-----------------------------------
(3, 1) (4, 0) (0, 3)

15、eval()---用來將字符串轉換為字典、列表

16、exec()---執行str

17、lambda()----匿名函數

三種功能:數字運算與邏輯運算、數據過濾、與functools結合做數列求和求積運算

數字與邏輯運算:

print(lambda x:x+1) #輸出函數體的位置
print((lambda x:x+1)(1))#定義一個函數 接收左邊的x  右邊表示要輸出結果 x+1
print((lambda x:x if x >10 else 10)(5))  #定義一個函數 左邊為輸入x 右邊如果x>10則輸出x 否則輸出y 用括號調用
tmp_x=lambda x:x if x>10 else 20 #將函數體賦值 相當於def了一個函數
print(tmp_x(5)) #函數調用
(lambda x:print(x) if x>10 else print(50))(10)#用print的方式時一樣的
--------------------------------
<function <lambda> at 0x0000015B82F62E18>
2
10
20
50

數據過濾(與map或filter結合使用,註意filter、map的區別):

t1=filter(lambda i:i>3,range(7))
t2=filter(lambda i:i*3,range(7))
print(t1)
for i in t1:
        print(i)
print(t2)
for i in t2:
    print(i)
#lambda不僅能表示函數運算還能表示一種關系 配合filter進行過濾
print(!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!)
#t3=map(lambda i:i*3,range(7))
t3=map(lambda i:i>3,range(7))#與filter對比
print(t3)
for i in t3:
        print(i)
-------------------------------------------
<filter object at 0x000001B68E7EFC50>
4
5
6
<filter object at 0x000001B68E7EFCC0>
1
2
3
4
5
6
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
<map object at 0x000001B68E7EFC88>
False
False
False
False
True
True
True

此程序說明:filter()結合lambda使用,是完成過濾的效果,能將符合條件的值顯示出來,但是不能進行計算,所以t2=filter(lambda i:i*3,range(7))的結果為1-6,此處還需要註意range(7)表示的數字範圍為1-6,沒有7和0。filter與map對比,map所輸出的結果為布爾值,不是最後過濾出來的數據

與functools結合做數列求和求積運算:

import functools
t3=functools.reduce(lambda x,y:x+y,range(101))
print(t3)
t4=functools.reduce(lambda x,y:x*y,range(1,5))
print(t4)
t5=functools.reduce(lambda x,y:x*y,range(5))
print(t5)
----------------------------
5050
24 #1*2*3*4
0  #這裏從0開始

18.float()---浮點數

19、format---字符串格式輸出 先不深究

import time
x=%Y %m %d %X
print(time.strftime(x))

20 frozenset()---只讀集合

a=set([1,2,3,4,5])
b=frozenset([1,2,3,4,5])
print(a,b)
for i in a:
    print(i)
for i in b:
    print(i)
------------------------------------------------------------
{1, 2, 3, 4, 5} frozenset({1, 2, 3, 4, 5})
1
2
3
4
5
1
2
3
4
5

技術分享圖片技術分享圖片

與普通集合相比,少了很多方法

21、globals()---全局表量(與locals()對比)

22、hash()---求哈希值

hh=hash(yomi) #哈希 散列函數 字典的查找方式 hash算法之後 排序 之後用折半查找
print(hh)#了解一下python內置的hash函數對於字符串來說,每次得到的值不一樣

23、hex() ---十進制轉換為十六進制

>>> print(bin(255),hex(255))
0b11111111 0xff

24、max 與min---最大最小值的運算,註意的是列表、字典的情況

print(min({9:nnn,1:xxx}),min([1,2,3,4]),max(1,2,3,4))
------------------------------------------------------
1 1 4

>>> max(a,b,c)
c

25、iter()---叠代器

此處不再展開介紹,詳見叠代器章節,next ->叠代器裏面的__next__

26 、oct()---八進制轉換

print(oct(1),oct(8),oct(16))
-----------------------
0o1 0o10 0o20

27、ord()---與chr相對應

chr ASCII碼轉換成字符 對應ord 字符轉為ASCII碼 知道A 65 a97 相差32

print(chr(100))
print(chr(96))
print(ord(A))
print(ord(a))

28、pow()---指數運算

print(pow(2,10)) 
1024
print(pow(2,2))
4

29、reversed( )---將字符串取反並拆分成叠代器

xxx=abc
y=reversed(xxx)
print(y)
for i in y:
  print(i) #反轉並變成一個叠代器
------------------------------
<reversed object at 0x00000000027D75F8>
c
b
a

30、round( )--- 小數點後取位數

print(round(1.23456,2))
print(round(1.23456,5))
print(round(1.23456,0))
print(round(1.23456))
----------------------------------
1.23
1.23456
1.0
1

31、slice()---切片(註意管前不管後)

a=[11,22,33,44,55]
print(a[slice(2,4)])#切片
print(a[2:4])
----------------------
[33,44]
[33,44]
#管前不管後

32、sorted()--- 排序(註意lambda的另一種使用方式)

dict_tmp={0:111,7:222,3:999,2:923,-5:122,11:114,9:-888}#這是個無序的字典,key和value的值都是無序的
print(sorted(dict_tmp))#輸出key的排序結果,此處只輸出key,列表形式輸出
print(sorted(dict_tmp.items()))#輸出key的排序結果,此處輸出key-value的對應值,列表形式輸出,key-value為元組形式
print(sorted(dict_tmp.items(),key=lambda x:x[1]))#輸出value的排序結果,輸出格式為key-value,列表形式輸出,key-value為元組形式
---------------------------------------
[-5, 0, 2, 3, 7, 9, 11]
[(-5, 122), (0, 111), (2, 923), (3, 999), (7, 222), (9, -888), (11, 114)]
[(9, -888), (0, 111), (11, 114), (-5, 122), (7, 222), (2, 923), (3, 999)]

33、zip()--- 組合(在key-value的結構時使用可以組合成關系,適當加工可以生成字典)

z1=[1,2,3,4,5]
z2=[a,b,c,d,e]
z3=zip(z1,z2)#組合成key-valued的對應形式
print(type(z3),z3)
for i in z3:
print(i) #叠代器 此處循環後不會下面不會有運行結果
for i,j in z3:
print(i,j)
-------------------------------------
<class zip> <zip object at 0x000001D4B9659F48>
(1, a)
(2, b)
(3, c)
(4, d)
(5, e)

python筆記-5(內置函數)