Python內置函數

map

    map(處理邏輯,可遍歷的對象)   處理序列中的每一個元素,元素個數及位置與原來同樣
javascript

?
1
2
v = "ALEX"        
print ( list ( map ( lambda x: x.lower(), v)))     # 結果爲 ['a', 'l', 'e', 'x']

    更節省代碼。java

?
1
2
3
4
5
6
7
8
9
a = []
def jianer(array):
     for i in array:
         a.append(i.lower())
     print (a)
jianer(v)
 
結果
[ 'a' , 'l' , 'e' , 'x' ]

filter

    filter(處理邏輯,可遍歷對象) 遍歷序列中的每一個元素,判斷每一個元素的布爾值爲True則保留元素python

?
1
2
3
4
5
6
7
8
9
movie_people = [ 'alex_sb' , 'wupeiqi_sb' , 'linhaifeng' , 'yuanhao_sb' ]
def filter_test(array):
     ret = []
     for i in array:
         if not i.endswith( 'sb' ):
             ret.append(i)
     return ret
res = filter_test(movie_people)
print (res)<br>結果<br>[ 'linhaifeng' ]
?
1
2
movie_people = [ 'alex_sb' , 'wupeiqi_sb' , 'linhaifeng' , 'yuanhao_sb' ]
print ( list ( filter ( lambda n: n.endswith( 'sb' ), movie_people)))     # 判斷元素endswith的值爲True,爲True則保留元素<br>結果<br>['alex_sb', 'wupeiqi_sb', 'yuanhao_sb']<br>

reduce

   from funtools import reduceexpress

   reduce(函數,序列,默認空參數) 處理一個序列,而後把序列進行合併操做數據結構

 1 num_l = [1, 2, 3, 100]
 2 res = 0
 3 for num in num_l:
 4     res += num
 5 print(res)
 6 
 7 
 8 def reduce_test(array):
 9     res = 0
10     for num in array:
11         res += num
12     return res
13 
14 ret = reduce_test(num_l)
15 print(ret)
16 
17 結果都爲106
鋪墊例子

 

?
1
2
3
4
5
from functools import reduce            # reduce 用reduce函數要定義這句話
 
num_l = [ 1 , 2 , 3 , 100 ]
print ( reduce ( lambda x, y: x + y, num_l, 1 ))
print ( reduce ( lambda x, y: x + y, num_l))

其他內置函數總結

用法以下(缺乏的待補充)app

  abs  取絕對值  參數能夠是:負數、正數、浮點數或者長整形;只取絕對值,可是不會取整ssh

?
print ( abs ( - 1 ))
print ( abs ( 1 ))
 
結果
1
1

  all  判斷全部裏面的元素是否爲真值,若是有單個爲空則返回True。參數爲可迭代對象ide

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> all ([ 'a' , 'b' , 'c' , 'd' ])  #列表list,元素都不爲空或0
True
>>> all ([ 'a' , 'b' , ' ', ' d'])   #列表list,存在一個爲空的元素
False
>>> all ([ 0 , 1 2 , 3 ])           #列表list,存在一個爲0的元素
False
   
>>> all (( 'a' , 'b' , 'c' , 'd' ))  #元組tuple,元素都不爲空或0
True
>>> all (( 'a' , 'b' , ' ', ' d'))   #元組tuple,存在一個爲空的元素
False
>>> all (( 0 , 1 2 , 3 ))           #元組tuple,存在一個爲0的元素
False
   
   
>>> all ([]) # 空列表
True
>>> all (()) # 空元組
True

  any  有一個爲真則爲真,返回True
函數

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
>>> any ([ 'a' , 'b' , 'c' , 'd' ])  #列表list,元素都不爲空或0
True
>>> any ([ 'a' , 'b' , ' ', ' d'])  #列表list,存在一個爲空的元素
True
>>> any ([ 0 , ' ', False])  #列表list,元素全爲0,' ',false
False
  
>>> any (( 'a' , 'b' , 'c' , 'd' ))  #元組tuple,元素都不爲空或0
True
>>> any (( 'a' , 'b' , ' ', ' d'))  #元組tuple,存在一個爲空的元素
True
>>> any (( 0 , ' ', False))    #元組tuple,元素全爲0,' ',false
False
  
  
>>> any ([]) # 空列表
False
>>> any (()) # 空元組
False

  bin  十進制轉二進制
post

?
1
2
3
print ( bin ( 5 ))
 
0b101        # 0b表示二進制

  hex   十進制轉十六進制

?
1
2
3
print ( hex ( 74 ))
 
0x4a      

  oct  十進制轉八進制

?
1
2
3
print ( oct ( 18 ))
 
0o22

  bool  判斷布爾值

  bytes 編碼  ascll碼不能編譯中文,會報錯

?
1
2
3
4
5
6
name = '你好'
print (bytes(name,encoding = 'utf8' ))                # 手動把字符串編碼,轉爲二進制
print (bytes(name,encoding = 'utf8' ).decode( 'utf8' )) # 須要把字符串進行編碼,再解碼(用什麼方式編碼就用什麼解碼,decode)
 
b '\xe4\xbd\xa0\xe5\xa5\xbd'
你好

  dir  顯示函數內置屬性和方法

?
1
2
3
print ( dir ( dict ))
 
[ '__class__' , '__contains__' , '__delattr__' , '__delitem__' , '__dir__' , '__doc__' , '__eq__' , '__format__' , '__ge__' , '__getattribute__' , '__getitem__' , '__gt__' , '__hash__' , '__init__' , '__iter__' , '__le__' , '__len__' , '__lt__' , '__ne__' , '__new__' , '__reduce__' , '__reduce_ex__' , '__repr__' , '__setattr__' , '__setitem__' , '__sizeof__' , '__str__' , '__subclasshook__' , 'clear' , 'copy' , 'fromkeys' , 'get' , 'items' , 'keys' , 'pop' , 'popitem' , 'setdefault' , 'update' , 'values' ]

  divmod  獲得商和餘數(可用做分頁用)

?
1
2
3
print ( divmod ( 10 , 3 ))
 
( 3 , 1 )

  eval  一、提取字符串的數據結構 二、做字符串中的數據運算

?
1
2
3
4
5
6
dic = { 'name' : 'alex' #字典類型轉成字符串
dic_str = str (dic)
print (dic_str)
 
d1 = eval (dic_str)     #eval:把字符串中的數據結構給提取出來
print (d1)

 

express = "1+2*(3/3-1)-2"
print(eval(express))

輸出
-1,0               第二種數據運算

  hash  可hash的數據類型即不可變數據類型,不可hash的數據類型便可變數據類型

       hash的做用:從下載的軟件判斷是否被改變,經過對比hash值,便知道

  help  查看函數的用法的詳細信息

  isinstance  判斷類型

?
1
2
3
4
5
6
7
8
9
10
11
print ( isinstance ( 1 , int ))       #判斷是否是int類型
print ( isinstance ( 'abc' , str ))   #判斷字符串
print ( isinstance ([], list ))     #判斷列表
print ( isinstance ({}, dict ))     #判斷字典
print ( isinstance ({ 1 , 2 }, set ))   #判斷集合
 
True
True
True
True
True

  locals

複製代碼
def test():
    age = "18"
    print(globals())    # 輸出全局變量
    print(locals())     # 輸出上一層的變量

test()


{'test': <function test at 0x000001C869BB9598>, '__file__': 'C:/Users/lenovo/PycharmProjects/untitled/pythons3/內置函數.py', '__spec__': None, '__loader__': <_frozen_importlib_external.SourceFileLoader object at 0x000001C869B56CF8>, '__builtins__': <module 'builtins' (built-in)>, '__package__': None, '__cached__': None, '__name__': '__main__', '__doc__': None}
{'age': '18'}
複製代碼

  max(最大)和min(最小)   遍歷比較,不一樣類型間不能比較

list = [99,55,23,11,68]
print(max(list))
print(min(list))

99
11

 

age_dic={'alex_age':18,'wupei_age':20,'zsc_age':100,'lhf_age':30}
print(max(age_dic.values()))        # 取出最大年齡
print(max(age_dic))                 # 默認比較key

100
zsc_age

 

 1 age_max = [
 2         {"name":"alex","age":25},
 3         {"name":"tom","age":30},
 4         {"name":"tony","age":55}
 5 ]
 6 li = []
 7 for item in age_max:
 8     li.append(item["age"])
 9 print(li)
10 age = {"alex":25,"tom":30,"tony":55}
11 print(max(li))
12 max(age_max,key=lambda dic:dic["age"])
13 print(max(age_max,key=lambda x:x["age"]))
14 
15 [25, 30, 55]
16 55
17 {'name': 'tony', 'age': 55}
年齡比較高級用法

 

  zip 一一對應分配

複製代碼
print(list(zip(('a', 'n', 'c'), (1, 2, 3))))
print(list(zip(('a', 'n', 'c'), (1, 2, 3, 4))))
print(list(zip(('a', 'n', 'c', 'd'), (1, 2, 3))))

[('a', 1), ('n', 2), ('c', 3)]
[('a', 1), ('n', 2), ('c', 3)]
[('a', 1), ('n', 2), ('c', 3)]
複製代碼

 

複製代碼
p={'name':'alex','age':18,'gender':'none'}
print(list(zip(p.keys(),p.values())))
print(list(p.keys()))    #取keys
print(list(p.values()))  #values
print(list(zip(['a','b'],'12345')))   # zip傳倆個參數,都是序列。即可一一對應

[('age', 18), ('gender', 'none'), ('name', 'alex')]
['age', 'gender', 'name']
[18, 'none', 'alex']
[('a', '1'), ('b', '2')]
複製代碼

    max和zip結合使用

age = {"alex":25,"tom":30,"tony":55}
print(list(zip(age.values(),age.keys())))       # 一一對應
print(max(zip(age.values(),age.keys())))        # 一一對應取最大值

[(55, 'tony'), (25, 'alex'), (30, 'tom')]
(55, 'tony')

 

複製代碼
dic={'age1':18,'age2':10}
print(max(dic))           # 比較的是key
print(max(dic.values()))  # 比較的是值,可是不知道對應的哪一個key
print(max(zip(dic.values(),dic.keys()))) # 經過zip,即可以獲取到值最大,對應的是哪一個key

age2
18
(18, 'age1')
複製代碼

  pow 幾的幾回方

 

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

27          # 3**3   3的3次方
0           # 2**3%2 2的3次方取餘

 

  reversed  反轉

li = [1,2,3,4]
print(list(reversed(li)))     # 反轉

[4, 3, 2, 1]      

  round  四捨五入

print(round(4.3))

4

  set  變集合,記得集合的特性

print(set("hello"))

{'o', 'l', 'h', 'e'}

  slice 切片,能夠指定步長

複製代碼
l='hello'
s1=slice(3,5)     # 切片 取3到5的元素
s2=slice(1,4,2)  # 切片,指定步長爲2
print(l[3:5])

print(l[s1])         # 切片
print(l[s2])    

print(s2.start)    # 開始
print(s2.stop)    # 結束
print(s2.step)    # 步長

lo
lo
el
1
4
2
複製代碼

  sorted 排序(排序本質上就是在比較大小,不一樣類型間不能比較)

l=[3,2,1,5,7]
l1=[3,2,'a',1,5,7]
print(sorted(l))       # 排序
# print(sorted(l1))    # 會報錯

[1, 2, 3, 5, 7]

 

people=[
     {'name':'alex','age':1000},
     {'name':'wupei','age':10000},
     {'name':'yuanhao','age':9000},
     {'name':'linhaifeng','age':18},
 ]
print(sorted(people,key=lambda dic:dic['age']))    # 按年齡進行排序

[{'name': 'linhaifeng', 'age': 18}, {'name': 'alex', 'age': 1000}, {'name': 'yuanhao', 'age': 9000}, {'name': 'wupei', 'age': 10000}]
年齡排序

 

name_dic={
     'abyuanhao': 11900,
     'alex':1200,
     'wupei':300,
}
print(sorted(name_dic))   #按key排序

print(sorted(name_dic,key=lambda key:name_dic[key]))    # 取出字典的values排序

print(sorted(zip(name_dic.values(),name_dic.keys())))   # 按價格從低到高排序,並一一對應

['abyuanhao', 'alex', 'wupei']
['wupei', 'alex', 'abyuanhao']
[(300, 'wupei'), (1200, 'alex'), (11900, 'abyuanhao')]
高級用法

  sum 求和

1 li = [1,2,3,4]
2 print(sum(li))
3 print(sum(range(101)))
4 
5 10
6 5050

  type 判斷數據類型

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

124
View Code

  vars

    裏面若是沒有參數,和locals用法相同

def test():
    name = "病毒尖兒"
    print(locals())
    print(vars())
test()

{'name': '病毒尖兒'}
{'name': '病毒尖兒'}
示例

    若是裏面有一個參數,查看某一個方法,並顯示成字典的類型

print(vars(int))

內容過多,再也不添加,以字典的形式表現
示例

  import 導入模塊(就是導入一個py文件)      

    粗略用法,不能導入字符串類型(之後可能會這種需求)

 1 # 一、先建立一個test.py的文件
 2         寫下一下內容
 3                 def say_hi():
 4                     print("你好,林師傅")
 5 # 若是想在別的地方調用這個模塊(這個test.py文件)
 6 
 7 import test
 8 test.say_hi()
 9 
10 結果
11 
12 你好,林師傅
調用模塊簡單示例

  __import__ 能夠導入有字符串模塊兒

    粗略用法

 1 # 一、先建立一個test.py的文件
 2         寫下一下內容
 3                 def say_hi():
 4                     print("你好,林師傅")
 5 # 若是想在別的地方調用這個模塊(這個test.py文件)
 6 
 7 module_name='test'
 8 m=__import__(module_name)   #有字符串的模塊
 9 m.say_hi()
10 
11 結果
12 
13 你好,林師傅
__import__示例

      這裏只是對模塊粗略進行解釋。未完,待續……

相關文章
相關標籤/搜索