可迭代对象¶
对可迭代对象的操作。
类型变量
- class T¶
TypeVar('T')
- class U¶
TypeVar('U')
- class F¶
TypeVar('F', np.float64, np.int_)
- class H¶
TypeVar('H', bound=Hashable)
函数
- adjacent_n_tuples(objects, n)[source]¶
将序列对象循环地拆分为 n 长度的元组。
另请参阅
adjacent_pairs
n=2 时的别名
示例
>>> list(adjacent_n_tuples([1, 2, 3, 4], 2)) [(1, 2), (2, 3), (3, 4), (4, 1)] >>> list(adjacent_n_tuples([1, 2, 3, 4], 3)) [(1, 2, 3), (2, 3, 4), (3, 4, 1), (4, 1, 2)]
- adjacent_pairs(objects)[source]¶
是
adjacent_n_tuples(objects, 2)
的别名。另请参阅
示例
>>> list(adjacent_pairs([1, 2, 3, 4])) [(1, 2), (2, 3), (3, 4), (4, 1)]
- all_elements_are_instances(iterable, Class)[source]¶
如果可迭代对象的所有元素都是 Class 的实例,则返回
True
。否则返回False
。- 参数:
iterable (Iterable[object])
Class (type[object])
- 返回类型:
bool
- batch_by_property(items, property_func)[source]¶
接收一个序列,并返回一个元组列表 (batch, prop),其中 batch 中的所有项在 Callable property_func 中运行时具有相同的输出,并且将所有这些 batch 链接起来将得到原始序列(即保留顺序)。
示例
>>> batch_by_property([(1, 2), (3, 4), (5, 6, 7), (8, 9)], len) [([(1, 2), (3, 4)], 2), ([(5, 6, 7)], 3), ([(8, 9)], 2)]
- concatenate_lists(*list_of_lists)[source]¶
将作为参数提供的可迭代对象合并到一个列表中。
示例
>>> concatenate_lists([1, 2], [3, 4], [5]) [1, 2, 3, 4, 5]
- list_difference_update(l1, l2)[source]¶
返回一个包含 l1 中不在 l2 中的所有元素的列表。
示例
>>> list_difference_update([1, 2, 3, 4], [2, 4]) [1, 3]
- list_update(l1, l2)[source]¶
- 用于代替
set.update()
以保持顺序, 确保从 l1 中删除重复项,而不是 l2。删除 l1 和 l2 的重叠部分,然后将 l2 不变地连接起来。
示例
>>> list_update([1, 2, 3], [2, 4, 4]) [1, 3, 2, 4, 4]
- 用于代替
- listify(obj: str) list[str] [source]¶
- listify(obj: Iterable[T]) list[T]
- listify(obj: T) list[T]
智能地将 obj 转换为列表。
示例
>>> listify("str") ['str'] >>> listify((1, 2)) [1, 2] >>> listify(len) [<built-in function len>]
- make_even(iterable_1, iterable_2)[source]¶
- 用重复值扩展两个可迭代对象中较短的一个,直到其
长度与较长的可迭代对象相等(优先考虑较早的元素)。
另请参阅
make_even_by_cycling
循环元素而不是优先考虑较早的元素
示例
>>> make_even([1, 2], [3, 4, 5, 6]) ([1, 1, 2, 2], [3, 4, 5, 6]) >>> make_even([1, 2], [3, 4, 5, 6, 7]) ([1, 1, 1, 2, 2], [3, 4, 5, 6, 7])
- make_even_by_cycling(iterable_1, iterable_2)[source]¶
- 用重复值扩展两个可迭代对象中较短的一个,直到其
长度与较长的可迭代对象相等(在较短的可迭代对象上循环)。
另请参阅
make_even
优先考虑较早的元素而不是循环它们
示例
>>> make_even_by_cycling([1, 2], [3, 4, 5, 6]) ([1, 2, 1, 2], [3, 4, 5, 6]) >>> make_even_by_cycling([1, 2], [3, 4, 5, 6, 7]) ([1, 2, 1, 2, 1], [3, 4, 5, 6, 7])
- remove_nones(sequence)[source]¶
删除 bool(x) 求值为 False 的元素。
示例
>>> remove_nones(["m", "", "l", 0, 42, False, True]) ['m', 'l', 42, True]
- resize_array(nparray, length)[source]¶
- 扩展/截断 nparray,使
len(result) == length
。 nparray 的元素会被循环以达到所需的长度。
另请参阅
resize_preserving_order
优先考虑较早的元素而不是循环它们
make_even_by_cycling
用于平衡两个可迭代对象的类似循环行为
示例
>>> points = np.array([[1, 2], [3, 4]]) >>> resize_array(points, 1) array([[1, 2]]) >>> resize_array(points, 3) array([[1, 2], [3, 4], [1, 2]]) >>> resize_array(points, 2) array([[1, 2], [3, 4]])
- 扩展/截断 nparray,使
- resize_preserving_order(nparray, length)[source]¶
- 扩展/截断 nparray,使
len(result) == length
。 nparray 的元素会被复制以达到所需的长度(优先考虑较早的元素)。
如果 nparray 为空,则构造一个指定长度的全零数组。
另请参阅
resize_array
循环元素而不是优先考虑较早的元素
make_even
用于平衡两个可迭代对象的类似优先考虑较早元素的行为
示例
>>> resize_preserving_order(np.array([]), 5) array([0., 0., 0., 0., 0.]) >>> nparray = np.array([[1, 2], [3, 4]]) >>> resize_preserving_order(nparray, 1) array([[1, 2]]) >>> resize_preserving_order(nparray, 3) array([[1, 2], [1, 2], [3, 4]])
- 参数:
nparray (npt.NDArray[np.float64])
length (int)
- 返回类型:
npt.NDArray[np.float64]
- 扩展/截断 nparray,使
- resize_with_interpolation(nparray, length)[source]¶
- 扩展/截断 nparray,使
len(result) == length
。 新元素通过插值法获得以达到所需的长度。
请注意,如果 nparray 的长度发生变化,其 dtype 也可能随之变化(例如 int -> float:参见示例)
另请参阅
resize_array
循环元素而不是插值
resize_preserving_order
优先考虑较早的元素而不是插值
示例
>>> nparray = np.array([[1, 2], [3, 4]]) >>> resize_with_interpolation(nparray, 1) array([[1., 2.]]) >>> resize_with_interpolation(nparray, 4) array([[1. , 2. ], [1.66666667, 2.66666667], [2.33333333, 3.33333333], [3. , 4. ]]) >>> nparray = np.array([[[1, 2], [3, 4]]]) >>> nparray = np.array([[1, 2], [3, 4], [5, 6]]) >>> resize_with_interpolation(nparray, 4) array([[1. , 2. ], [2.33333333, 3.33333333], [3.66666667, 4.66666667], [5. , 6. ]]) >>> nparray = np.array([[1, 2], [3, 4], [1, 2]]) >>> resize_with_interpolation(nparray, 4) array([[1. , 2. ], [2.33333333, 3.33333333], [2.33333333, 3.33333333], [1. , 2. ]])
- 扩展/截断 nparray,使