Logo

郎哥编程

内置函数:操作对象

2020-12-22 173

Python提供用于操作对象的多个内置函数,这些函数可以获取对象的长度、对序列对象排序、迭代可迭代对象、检测对象的类型。

下表列出了用于操作对象常用的内置函数。

21.png

获取对象的长度

函数声明:

len(s)

返回对象的长度(元素个数)。实参可以是序列(如 string、bytes、tuple、list 或 range 等)或集合(如 dictionary、set 或 frozen set 等)。

案例代码:

>>> s = "abcdef"
>>> print(len(s))
6
>>> a = ["java","python","c++"]
>>> print(len(a))
3
>>>

对象元素排序

函数声明:

sorted(iterable, *, key=None, reverse=False)

对传入的iterable进行排序,以列表方式返回排序结果。key 指定带有单个参数的函数,用于从 iterable 的每个元素中提取用于比较的键 (例如 key=str.lower)。 默认值为 None (直接比较元素)。

reverse 为一个布尔值。 如果设为 True,则每个列表元素将按反向顺序比较进行排序。

案例代码:

>>> a = (192,36,89,6,101,19)
# 对元组a的元素按升序排序
>>> b = sorted(a)
>>> print(b)
[6, 19, 36, 89, 101, 192]
# 对元组a的元素按降序排序
>>> c = sorted(a,reverse=True)
>>> print(c)
[192, 101, 89, 36, 19, 6]

逆序对象元素

函数声明:

reversed(seq)

对传入的seq对象元素逆序排列,并返回一个反转的迭代器(iterator)。 seq 必须是一个具有 __reversed__() 方法的对象或者是支持该序列协议。

案例代码:

>>> s = "abcdef"
>>> r = reversed(s)
>>> print(list(r))
['f', 'e', 'd', 'c', 'b', 'a']
>>>

查看对象类型

函数声明:

class type(object)

返回object对象的类型。

案例代码:

>>> s = "abcdef"
>>> type(s)
<class 'str'>
>>> a = ["java","Python"]
>>> type(a)
<class 'list'>
>>>

检查对象类型

函数声明:

isinstance(object, classinfo)

如果参数 object 是参数 classinfo 的实例或者是其 (直接、间接或 虚拟) 子类则返回 True。 如果 object 不是给定类型的对象,函数将总是返回 False。

案例代码:

>>> s = "abcdef"
# 检测对象s是否是str类型
>>> isinstance(s,"str")
True
>>> a = ["java","python"]
# 检测对象s是否是list类型
 
>>> isinstance(s,list)
False
# 检测对象a是否是list类型
>>> isinstance(a,list)
True
>>>

获取对象的迭代器

函数声明:

iter(object[, sentinel])

返回object对象的迭代器,若没有传入可选参数sentinel的实参,object 必须是支持迭代协议(有 __iter__() 方法)的容器对象,否则会触发 TypeError异常。

如果有第二个实参 sentinel,那么 object 必须是可调用的对象(例如函数)。此时,iter 创建了一个迭代器对象,每次调用这个迭代器对象的__next__()方法时,都会调用 object。

案例代码:

>>> s = "abcdef"
# 返回对象s的迭代器
>>> d = iter(s)
>>> type(d)
<class 'str_iterator'>
# 从迭代器d获取下一个元素
>>> next(d)
'a'
>>> next(d)
'b'
>>>

从迭代器获取下一个元素

函数声明:

next(iterator[, default])

通过调用 iterator 的 __next__() 方法获取下一个元素。如果迭代器耗尽,则返回给定的 default,如果没有默认值则触发 StopIteration。

案例代码参见注释(6)

列出对象的属性列表

函数声明:

dir([object])

如果没有实参,则返回当前本地作用域中的名称列表。如果有实参,它会尝试返回该对象的有效属性列表。

案例代码:

>>> s = "abcdef"
>>> dir(s)
['__add__', '__class__', '__contains__', 
'__delattr__', '__dir__', '__doc__', '__eq__', 
'__format__', '__ge__', '__getattribute__', 
'__getitem__', '__getnewargs__', '__gt__',
 '__hash__', '__init__', '__init_subclass__', 
 '__iter__', '__le__', '__len__', '__lt__', 
 '__mod__', '__mul__', '__ne__', '__new__', 
 '__reduce__', '__reduce_ex__', '__repr__', 
 '__rmod__', '__rmul__', '__setattr__', 
 '__sizeof__', '__str__', '__subclasshook__',
  'capitalize', 'casefold', 'center', 'count', 
  'encode', 'endswith', 'expandtabs', 'find', 
  'format', 'format_map', 'index', 'isalnum', 
  'isalpha', 'isascii', 'isdecimal', 'isdigit',
   'isidentifier', 'islower', 'isnumeric', 'isprintable', 
   'isspace', 'istitle', 'isupper', 'join', 
   'ljust', 'lower', 'lstrip', 'maketrans', 
   'partition', 'replace', 'rfind', 'rindex', 
   'rjust', 'rpartition', 'rsplit', 'rstrip', 
   'split', 'splitlines', 'startswith', 
   'strip', 'swapcase', 'title', 
   'translate', 'upper', 'zfill']
>>>

从代码执行结果可以看出,dir(s)列出了字符串对象所有的属性及方法。

检查对象的元素是否都为真值

函数声明:

all(iterable)

如果 iterable 的所有元素均为真值(或可迭代对象为空)则返回 True。元素除了是 0、空、None、False 外都算 True。

案例代码:

>>> s = (19,0,3)
>>> all(s)
False
>>> s = (19,1,3)
>>> all(s)
True
>>>

获取对象的哈希值

函数声明:

hash(object)

返回该对象的哈希值(如果它有的话)。哈希值是整数。它们在字典查找元素时用来快速比较字典的键。相同大小的数字变量有相同的哈希值。

案例代码:

>>> s = "abcdef"
>>> hash(s)
1810951208529201389
>>> num1 = 10
>>> hash(num1)
10
>>> num2 = 10.0
>>> hash(num2)
10
>>>

获取对象的唯一标识值

函数声明:

id(object)

返回对象的唯一标识值,该值是一个整数。

案例代码:

>>> s = "abcdef"
>>> id(s)
2712228324592
>>> num = 10
>>> id(num)
140733556398016
>>>

获取对象的最大元素

函数声明:

max(iterable, *[, key, default])
max(arg1, arg2, *args[, key])

返回可迭代对象中最大的元素,或者返回两个及以上实参中最大的。如果只提供了一个位置参数,它必须是非空 iterable,返回可迭代对象中最大的元素;如果提供了两个及以上的位置参数,则返回最大的位置参数。

key 实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。

案例代码:

>>> a = [90,20,31,101,98,16]
>>> max(a)
101
>>> max(35,89)
89
>>>

获取对象的最小元素

函数声明:

min(iterable, *[, key, default])
min(arg1, arg2, *args[, key])

返回可迭代对象中最小的元素,或者返回两个及以上实参中最小的。如果只提供了一个位置参数,它必须是非空 iterable,返回可迭代对象中最小的元素;如果提供了两个及以上的位置参数,则返回最小的位置参数。

key 实参指定排序函数用的参数,如传给 list.sort() 的。default 实参是当可迭代对象为空时返回的值。如果可迭代对象为空,并且没有给 default ,则会触发 ValueError。

案例代码:

>>> a = [90,20,31,101,98,16]
>>> min(a)
16
>>> min(35,89)
35
>>>

代码在线纠错(通义千问 qwen-max)

支持粘贴多个代码文件,提交后由阿里云通义千问自动分析代码漏洞、语法错误、逻辑问题并给出修改建议。
您已解锁 AI 代码纠错功能,可正常使用!

评论区

登录 后发表评论
暂无评论