除了 dict、list、set 和 tuple 之外,还有其他内置容器吗?

JJJ*_*ohn 2 python

dict、list、set 和 tuple 是 Python 的内置容器。

除了上面的,还有其他的内置容器吗?

术语“内置容器”来自doc

bph*_*phi 5

从技术上讲,Python 容器是任何实现__contains__方法 ( source ) 的东西。因此,如果我们只考虑内置函数,而不考虑标准库,我们可以通过这一行得到答案:

>>> [i for i in dir(__builtins__) if hasattr(eval(i), '__contains__')]
['_', '__name__', 'bytearray', 'bytes', 'dict', 'frozenset', 'list', 'range', 'set', 'str', 'tuple']
Run Code Online (Sandbox Code Playgroud)

我们要排除___name__所以一个完整的列表是:

bytearray, bytes, dict, frozenset, list, range, set, str, 和tuple


或者,

>>> [k for k, v in vars(__builtins__).items() if hasattr(v, '__contains__')]
['__name__', '__doc__', '__package__', 'bytearray', 'bytes', 'dict', 'frozenset', 'list', 'range', 'set', 'str', 'tuple', '_']
Run Code Online (Sandbox Code Playgroud)

并删除__name__, __doc__, __package__, 和_将产生相同的结果。