1. 程式人生 > >python學習之六(內建函式的使用)

python學習之六(內建函式的使用)

# 斷是否全部為真,布林運算
print(all([1,2,'1']))
# 有一個為真返回真
print(any([0,1]))
# 把十進位制轉換為二進位制
print(bin(3))
# 判斷布林值0,None的布林值為false,其他都是true
print(bool(None))
# 把字串轉換為位元組編碼的形式,一個漢字佔三個位元組,編碼可以在網路上進行傳輸
print(bytes('你好',encoding='utf-8'))
# 對編碼後的位元組進行解碼,用什麼方式編碼就用什麼方式解碼
print(bytes('你好',encoding='utf-8').decode('utf-8'))
# 對應ascii碼錶進行裝換
print(chr(97))
# 列印某一個物件下面都有哪些方法
print(dir(map))
# 列印10除以3,取出商和餘數,用來做分頁功能比較好
print(divmod(10,3))
# 定義一個字典,把字典轉換為字串型別
dic={'name':'cat'}
dic_str=str(dic)
print(dic_str)
# eval可以把字串型別再轉成字典型別
print(eval(dic_str))
# eval還可以把字串中的數學計算運算出來
express='1+2*(3/3-1)-2'
print(eval(express))
# 可hash的資料型別是不可變的資料型別,不可hash的資料型別是可變的資料型別
print(hash('lucky'))
print(hash('lucky'))
# 不管要hash的字串有多長,hash出來的資料都是一個定長資料,而且不能夠根據hash後的結果反推出hash之前的字串,hash可以用來做校驗,用來檢驗程式碼有沒有被改過
# 列印方法的解釋
print(help(all))
# 10進位制轉16進位制
print(hex(12))
# 10進位制轉8進位制
print(oct(12))
# 判斷某個物件是不是某種資料型別
print(isinstance(1,int))
# 列印所有全域性變數
name='lucky'
print(globals())
# 列印所在的區域性變數
print(locals())

拉鍊函式,左邊和右邊一一對應,程式碼如下:

print(list(zip(('a','b','c'),(1,2,3))))
輸出的結果:

定義一個列表p,將p中的key和value進行一一的對應對映,zip函式裡傳兩個引數,只要是序列型別的都可以進行對映,在python中序列型別主要有(列表,元組,字串),程式碼如下:

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

輸出結果:

簡單的max和min方法:(比較大小關係)

# max和min方法
l=[1,3,7,9]
print(max(l))
print(min(l))

複雜的max和min方法:程式碼如下:

# 在字典之中如果寫了values就把value取出來進行比較,如果沒寫,則自動比較key
age_dic={'dog1_age1':18,'dog2_age2':20,'dog3_age3':21,'dog4_age4':17}
print(max(age_dic.values()))
print(max(age_dic))

如果直接用max(age_dic)來進行比較,則比較的是age_dic字典中key的ascii碼的大小,輸出:dog4_dog4

如果用max(age_values())來進行比較,則比較的是age_dic字典中value的大小,輸出:21

但是要想輸出的結果中既有key又有value則我們可以使用zip函式,使用方法如下:

# 使用zip參與比較,更好的人機互動
print(list(max(zip(age_dic.values(),age_dic.keys()))))
輸出結果:[21, 'dog3_age3']

下面更高階一些的max方法:取出年齡最大的人的資訊,程式碼如下:

# 相當於一個for迴圈來取值比較
people=[
    {'name':'lucky','age':90},
    {'name':'dog','age':23},
    {'name':'cat','age':9},
    {'name':'cow','age':89}
]
print(max(people,key=lambda dic:dic['age']))

輸出結果:{'name': 'lucky', 'age': 90}

內建函式的補充:

# 對字串進行切片
l='hello'
print(l[3:5])
輸出結果:lo
# 一般這樣寫,這樣寫的好處是程式碼更加規範化
s1=slice(3,5)
s2=slice(1,4,2) # 指定步長是2
print(l[s1])
print(l[s2]) 

排序:對people進行排序,程式碼如下:

people=[
    {'name':'lucky','age':90},
    {'name':'dog','age':23},
    {'name':'cat','age':9},
    {'name':'cow','age':89}
]
print(sorted(people,key=lambda dic:dic['age']))

輸出的結果:[{'name': 'cat', 'age': 9}, {'name': 'dog', 'age': 23}, {'name': 'cow', 'age': 89}, {'name': 'lucky', 'age': 90}]

對字典name_dic進行排序:

name_dic={
    'dog':200,
    'cat':300,
    'cow':150
}
print(sorted(name_dic)) # 按照key的大小來進行比較而不是value
print(sorted(name_dic,key=lambda key:name_dic[key]))
print(sorted(zip(name_dic.values(),name_dic.keys()))) # 既要取出key又要取出value

輸出的結果:

['cat', 'cow', 'dog']
['cow', 'dog', 'cat']
[(150, 'cow'), (200, 'dog'), (300, 'cat')]