1.9 len()、max()、min() 、del
1.9.1 len() 返回對象(字符串、列表、元組、字典等)長度或元素個數
語法:len( obj )
返回值:返回對象長度。示例:
>>>str = "connie"
>>>len(str)? #返回字符串長度6
>>>citys = ['beijing', 'shanghai', 'shenzhen','tianjin']
>>>len(citys)? #返回4
1.9.2 max() 返回對象(字符串、列表、元組、字典、集合等)最大元素
函數功能為返回傳入的多個參數中的最大值,或者傳入的可迭代對象元素中的最大值(字典返回鍵)。
語法:
max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])
參數介紹:
iterable---可迭代對象,如字符串、列表、元組、字典等
key---可做為一個函數,用來指定取最大值的方法。
default---用來指定最大值不存在時返回的默認值。
? 所有元素的類型必須相同;
? 若是數值,則按數值大小比較;
? 若是字符串,則比較首字母,首字母相同則比較第二個,依次往下;
? 當列表的元素是字典時不能直接求max(),必須通過key定義方法;
? 當列表的元素為列表時,對比參照是元素中的第一個元素,若要用元素的其他元素做比較,需要需要通過key定義方法。
1.9.2.1 元素為簡單數據類型
示例:
>>> max(3,5,7,1)? #返回7
? 列表
>>>citys = ['beijing', 'shanghai', 'shenzhen','tianjin']
>>> max(citys) #返回'tianjin'
>>> students = ['lisi','zhangsan',12,'lisi']
>>> max(students)? #報錯,列表中元素類型不一致
? 字典
? 返回最大的鍵
>>> student_age={'zhangsan' : 10, 'lisi': 11, 'wangwu': 10, 'zhaoliu': 9}
>>> max(student_age)? #返回最大的鍵'zhaoliu',不是鍵值對。
? 返回特殊要求的鍵的max,如返回最大值對應的鍵
>>> student_age={'zhangsan' : 10, 'lisi': 11, 'wangwu': 10, 'zhaoliu': 9}
>>> max(student_age,key=student_age.get)? #返回字典中最大值對應的鍵,即'lisi'
上例重點說明:(很實用的技巧)
key后面定義了鍵的獲取方法,即該字典中最大values對應的key。
定義的student_age.get方法返回value,在value中獲取最大value即11,再依據鍵值對中值為11返回鍵。最大value有多個時則返回第一個匹配到的第一個鍵值對的鍵。
1.9.2.2 元素為復雜數據類型
? 列表(元素為子列表)
>>> students = [['lisi',10],['zhangsan',9],['wangwu',11]]
>>> max(students)? #返回 子列表['zhangsan', 9],比較的是子列表的第一個元素
才有key定義方法的方式可以指定比較子列表中的不同元素。
如:按子列表的第二個元素求max
>>> max(students, key=lambda x: x[1])? #返回['wangwu', 11]
說明:若max(students, key=lambda x: x[0]) 與 max(students)等效,都是按子列表的第一個元素求max
? 列表(元素為字典)
>>> students = [{'name': 'zhangsan', 'age': 12},{'name': 'lisi', 'age': 15}, {'name': 'wangwu', 'age': 13}]
>>> max(students)? #列表中元素為字典時直接max,報錯。
>>> max(students, key=lambda x: x['age'])? #獲取'age'最大的元素,返回元素{'name': 'lisi', 'age': 15}
上例重點說明:lambda是一個表達式,定義了一個匿名函數,代碼x為入口參數,x['age']為函數體,類似:
def f(x):? #獲取字典中鍵為'age的值
? return x['age']
按照表達式(方法)定義的規則獲取最大的age對應的元素,即{'name': 'lisi', 'age': 15}
>>> max(students, key=lambda x: x['name'])? #獲取姓名排第一的元素,返回元素{'name': 'zhangsan', 'age': 12}
1.9.3 min(),與max同,區別是返回最小元素
格式和使用方法與max完全相同。
1.9.4 del 刪除對象
格式: del obj
不是刪除對象中的元素,是直接從內存中刪除該對象。