arbitrary_element#

arbitrary_element(iterable)[source]#

返回 iterable 中的一个任意元素,但不将其移除。

这对于“查看”集合中的任意元素最有用,但也可用于任何列表、字典等。

参数:
iterableabc.collections.Iterable 实例

任何实现了 __iter__ 的对象,例如 set, dict, list, tuple 等。

返回值:
调用 next(iter(iterable)) 返回的对象
引发:
ValueError

如果 iterable 是一个迭代器(因为此函数的当前实现会从迭代器中消耗一个元素)。

注意

此函数不返回随机元素。如果 iterable 是有序的,连续调用将返回相同的值

>>> l = [1, 2, 3]
>>> nx.utils.arbitrary_element(l)
1
>>> nx.utils.arbitrary_element(l)
1

示例

常用 Iterable 对象的任意元素

>>> nx.utils.arbitrary_element([1, 2, 3])  # list
1
>>> nx.utils.arbitrary_element((1, 2, 3))  # tuple
1
>>> nx.utils.arbitrary_element({1, 2, 3})  # set
1
>>> d = {k: v for k, v in zip([1, 2, 3], [3, 2, 1])}
>>> nx.utils.arbitrary_element(d)  # dict_keys
1
>>> nx.utils.arbitrary_element(d.values())  # dict values
3

str 也是一个 Iterable

>>> nx.utils.arbitrary_element("hello")
'h'

如果 iterable 是一个迭代器,则会引发 ValueError

>>> iterator = iter([1, 2, 3])  # Iterator, *not* Iterable
>>> nx.utils.arbitrary_element(iterator)
Traceback (most recent call last):
    ...
ValueError: cannot return an arbitrary item from an iterator