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
不是删除对象中的元素,是直接从内存中删除该对象。