初學者python筆記(內置函數_2)

這篇初學者筆記是接着上一篇初學者python筆記(內置函數_1)的。同樣都是介紹Python中那些常用內置函數的。

max()和min()的高級用法

我們都知道,max():取最大值,min():取最小值,返回值就是那個最值。
其實,它還有一些更高級的用法和細節,他們主要用在字典的鍵值對上

  1. 比較鍵值對中的value或key
{'age1':17,'age4':19,'age233333':30,'age3':35}  #因爲字典無序,所有隨便排
print(max(age_dic.values()))  #比較四個鍵值對中的值哪個最大
print(max(age_dic))
#比較鍵值對,就是比較key,因爲是字符串,所以比較的是他們的ASCII碼值大小,
#並且是一位字符一位字符的比較,當比較都第四位的時候,4大於2已經分出結果了,所以'age233333'

運行結果:
35
age4

  1. 實現即比較了value,又輸出對應的key
age_dic = {'Big':12,'Small':25,'Ross':30,'Ruby':10} #比較值的大小後交換鍵值對位置
print(list(max(zip(age_dic.values(),age_dic.keys()))))
#用zip函數組合成一個個元組,再List變成列表,最終會輸出年齡最大的那個人的數據

運行結果:
[30, ‘Ross’]

  1. 多個可迭代對象,默認從第一個元素開始比較
ok = [
    (5,'d'),
    (2,'g'),
    (3,'k'),
    (1,'p')
    ]
ok2 = ['a10','b15','c30']
print(list(max(ok)))
print(list(max(ok2)))
#ok2中的的多個可迭代對象就是多個字符串,所以比較的每個元素就是字符

運行結果:
[5, ‘d’]
[‘c’, ‘3’, ‘0’]

  1. 找到最大的年齡,並輸出對應的全部信息
people = [
    {'name':'alex', 'age':22},
    {'name':'阿修羅', 'age':1000},
    {'name':'鬼斬', 'age':657},
    {'name':'二剛', 'age':89}
    ]
print(max(people,key=lambda dic:dic['age']))
#max的第一個參數是進行比較的那個容器,要比較的是'age'的value
#所以定義匿名函數比較'age'的值

運行結果:
{‘name’: ‘阿修羅’, ‘age’: 1000}

簡單運算函數

ord(): 顯示某個元素的ASCII碼大小
pow(): 次方函數,第三個參數是取餘運算,如:print(pow(3,3,2)) #就是輸出3的3次方再對2取餘的結果
round(): 四捨五入函數,將數四捨五入
set(): 將可迭代對象中的元素組成一個集合

reversed()與slice()函數

reversed(): 反轉對象中的元素
slice(): 製作一個切片

s = [1,2,3,4]
print(list(reversed(s)))  #反轉後是一個迭代器,需要list以列表形式輸出
print(s)  #上面只是調用函數操作s傳入的值,但不會改變s的原有數據

v = 'hello'
vv = slice(3,5)  #位置是3<=   <5的一個切片,切片是按索引來算的,可以從0開始取
print(v[vv])  #就相當於print(v[3:5])
v = 'hello'
v2 = slice(0,5,2)  #設置切片的步長爲2,從0到5,每2個取一個
print(v[v2])

運行結果:
[4, 3, 2, 1]
[1, 2, 3, 4]
lo
hlo

sorted()函數的特殊用法

sorted(): 將對象中的元素從小到大排序

  1. 簡單排序
people = [
    {'name':'alex', 'age':22},
    {'name':'阿修羅', 'age':1000},
    {'name':'鬼斬', 'age':657},
    {'name':'二剛', 'age':89}
    ]
print(sorted(people,key=lambda dic:dic['age']))  #按年齡進行排序

運行結果:
[{‘name’: ‘alex’, ‘age’: 22}, {‘name’: ‘二剛’, ‘age’: 89}, {‘name’: ‘鬼斬’, ‘age’: 657}, {‘name’: ‘阿修羅’, ‘age’: 1000}]

  1. 對於不同的keys:
name = {
    '路飛':19,
    '喬巴':5,
    '烏索普':25
    }
print(sorted(name))  #只會比較key
print(sorted(name,key=lambda key:name[key]))  #按照年齡比較,返回key
print(sorted(zip(name.values(),name.keys())))  #不止按年齡排序,還需要輸出對應的名字
#遍歷name字典的每個key下的值,因爲會返回整個容器,所以不需要list列表化

運行結果:
[‘烏索普’, ‘喬巴’, ‘路飛’]
[‘喬巴’, ‘路飛’, ‘烏索普’]
[(5, ‘喬巴’), (19, ‘路飛’), (25, ‘烏索普’)]

type()、vars()、locals()函數

type(): 查看某元素的類型
locals(): 打印局部變量
vars(): 沒有參數時和locals()一樣;本質是查看某個對象下面所有的方法

def test():
    msg = '沒有你,我的生活將沒有意義'
    print(locals())
    print(vars())
test()

運行結果:
{‘msg’: ‘沒有你,我的生活將沒有意義’}
{‘msg’: ‘沒有你,我的生活將沒有意義’}

不過,vars()函數的本質還是查看對象的方法:

print(vars(int))

這裏的運行結果就是int()對象下的所有方法:
int下的所有方法
因爲太多了,這裏就只插張圖吧

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章