Python3.1中的视图?

19 python view python-3.x

Python3.1中的视图究竟是什么?它们的行为似乎与迭代器的行为类似,它们也可以实现为列表.迭代器和视图有何不同?

cob*_*bal 12

据我所知,视图仍然附加到它创建的对象上.对原始对象的修改会影响视图.

来自文档(对于字典视图):

>>> dishes = {'eggs': 2, 'sausage': 1, 'bacon': 1, 'spam': 500}
>>> keys = dishes.keys()
>>> values = dishes.values()

>>> # iteration
>>> n = 0
>>> for val in values:
...     n += val
>>> print(n)
504

>>> # keys and values are iterated over in the same order
>>> list(keys)
['eggs', 'bacon', 'sausage', 'spam']
>>> list(values)
[2, 1, 1, 500]

>>> # view objects are dynamic and reflect dict changes
>>> del dishes['eggs']
>>> del dishes['sausage']
>>> list(keys)
['spam', 'bacon']

>>> # set operations
>>> keys & {'eggs', 'bacon', 'salad'}
{'bacon'}
Run Code Online (Sandbox Code Playgroud)


ins*_*get 5

我建议你读这个.它似乎做了最好的解释.

据我所知,观点似乎与dicts 更相关,可以强制进入lists.你也可以用它们创建一个迭代器,然后通过它迭代(for循环或通过调用next)

更新:来自Wayback机器的更新链接