這篇初學者筆記是接着上一篇初學者python筆記(內置函數_1)的。同樣都是介紹Python中那些常用內置函數的。
max()和min()的高級用法
我們都知道,max():取最大值,min():取最小值,返回值就是那個最值。
其實,它還有一些更高級的用法和細節,他們主要用在字典的鍵值對上
- 比較鍵值對中的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
- 實現即比較了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’]
- 多個可迭代對象,默認從第一個元素開始比較
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’]
- 找到最大的年齡,並輸出對應的全部信息
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(): 將對象中的元素從小到大排序
- 簡單排序
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}]
- 對於不同的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()對象下的所有方法:
因爲太多了,這裏就只插張圖吧