Iterable¶
-
class
pyiterable.
Iterable
(iterable)¶ -
all
()¶ Equivalent to the built-in function all( iterable )
Returns: True if all elements in self are True, else False >>> Iterable([True, False, True]).all() False >>> Iterable([True, True, True, True]).all() True
-
any
()¶ Equivalent to the built-in function any( iterable )
Returns: True if any element in self is True, else False >>> Iterable([True, False, True]).any() True >>> Iterable([False, False, False, False]).any() False
-
concat
(iterable)¶ Equivalent to calling list( left ) + list( right )
Parameters: iterable – iterable to concat with self Returns: New Iterable containing the elements from self and iterable >>> left = [2, 10, 2, 2, 5, 9, 10] >>> right = [13, -5, 1982, -10, 2384, 1982, 98] >>> Iterable(left).concat(right).to_list() [2, 10, 2, 2, 5, 9, 10, 13, -5, 1982, -10, 2384, 1982, 98]
-
contains
(value)¶ Equivalent to calling value in iterable
Parameters: value – value to search for inside iterable Returns: True if value exists inside iterable, otherwise false >>> values = Iterable([1, 2, 5, 9]) >>> values.contains(2) True >>> values.contains(4) False
-
difference
(iterable)¶ Equivalent to calling set( left ).difference( set ( iterable ) )
Parameters: iterable – iterable to check against for differences Returns: New Iterable containing elements found in self but not iterable >>> left = [2, 10, 1982, -5, 9, 10] >>> right = [1982, -10, -5, 1982, 98] >>> Iterable(left).difference(right).to_list() [9, 2, 10]
-
distinct
()¶ Equivalent to calling set( iterable )
Returns: New Iterable containing only the distinct elements; order not preserved >>> values = Iterable([2, 10, 2, 2, 5, 9, 10]) >>> values.distinct().to_list() [9, 2, 10, 5]
-
enumerate
(start=0)¶ Equivalent to the built-in function enumerate( sequence, start=0 )
Parameters: start – integer value to start from Returns: (index + start, value), where sequence[index] == value >>> grades = Iterable(['a', 'b', 'c', 'd', 'f']) >>> grades.enumerate().to_list() [(0, 'a'), (1, 'b'), (2, 'c'), (3, 'd'), (5, 'f')] >>> grades.enumerate(start=5).to_list() [(5, 'a'), (6, 'b'), (7, 'c'), (8, 'd'), (9, 'f')]
-
filter
(function)¶ Equivalent to the built-in function filter( function, iterable )
Parameters: function – function that returns False for items to exclude Returns: Iterable object that only contains items filtered by function >>> grades = Iterable(['a', 'b', 'c', 'd', 'f']) >>> grades.enumerate().filter(lambda i_x: i_x[0] < 3).to_list() [(0, 'a'), (1, 'b'), (2, 'c')]
-
first
(filter_by=None, default=None, function=None)¶ Equivalent to calling next( iter( filter( filter_by, iterable ) ) , default )
Parameters: - filter_by – keyword-only; function used to filter unwanted values
- default – keyword-only; value to return if self is empty after filtered by filter_by
- function – deprecated; use filter_by
Returns: first value of self filtered by filter_by
>>> values = Iterable([1, 2, 5, 9]) >>> values.first() 1 >>> values.first(filter_by=lambda x: x > 5) 9 >>> values.first(filter_by=lambda x: x > 10) # Returns None >>> values.first(filter_by=lambda x: x > 10, default=0) 0
-
get
(index)¶ Equivalent to calling list( iterable )[ index ]
- This function will convert the iterable to a sequence type before retrieving the value at index
- -1 is not supported to get the last element; use last() instead
Parameters: index – element number inside iterable Returns: value at index from iterable Raises IndexError: index is less than 0 or is out of bounds >>> values = Iterable([1, 2, 5, 9]) >>> values.get(2) 5 >>> values.get(-1) IndexError: index out of range >>> values.get(5) IndexError: index out of range
-
intersection
(iterable)¶ Equivalent to calling set( left ).intersection( set( right ) )
Parameters: iterable – iterable to intersect with self Returns: Iterable with distinct values found in both self and iterable >>> left = [2, 10, 1982, -5, 9, 10] >>> right = [1982, -10, -5, 1982, 98] >>> Iterable(left).intersection(right).to_list() [-5, 1982]
-
is_empty
()¶ Equivalent to calling len( list( iterable ) ) == 0
Returns: True if iterable does not contain any elements; otherwise False >>> Iterable([1, 2, 5, 9]).is_empty() False >>> Iterable([]).is_empty() True
-
last
(filter_by=None, default=None)¶ Equivalent to calling next( iter( reversed( list( filter( filter_by, iterable ) ) ) ) , default )
Parameters: - filter_by – keyword-only; function used to filter unwanted values
- default – keyword-only value to return if self is empty after filtered by filter_by
Returns: last value of self filtered by filter_by
>>> values = Iterable([1, 2, 5, 9]) >>> values.last() 9 >>> values.last(filter_by=lambda x: x < 5) 2 >>> values.last(filter_by=lambda x: x < 1) # Returns None >>> values.last(filter_by=lambda x: x < 1, default=0) 0
-
len
()¶ Equivalent to the built-in function len( s )
Returns: number of items in self >>> grades = Iterable(['a', 'b', 'c', 'd', 'f']) >>> grades.len() 5
-
map
(function)¶ Equivalent to the built-in function map( function, iterable )
Parameters: function – function applied to every item in self Returns: Iterable of results >>> numbers = Iterable([1, 3, 10, 4, 8]) >>> numbers.map(lambda x: x * 2).to_list() [2, 6, 20, 8, 16]
-
mapmany
(function)¶ Equivalent to calling itertools.chain.from_iterable( map( function, iterable ) )
Parameters: function – function to be applied to each input; outputs an iterable Returns: Iterable comprised of every element returned by function >>> values = Iterable([1, 2, 5, 9]) >>> func = lambda x: [x, x] >>> values.map(func).to_list() [[1, 1], [2, 2], [5, 5], [9, 9]] >>> values.mapmany(func).to_list() [1, 1, 2, 2, 5, 5, 9, 9]
-
max
(**kwargs)¶ Equivalent to the built-in function max( iterable, *[, key, default] )
Parameters: - key – keyword-only; function that returns the value to compare
- default – keyword-only; value to return if self is empty. Only available in Python 3.4 or later
Returns: largest item in self
>>> grades = Iterable([('Charlie', 79), ('Alice', 94), ('Bob', 65)]) >>> grades.max(key=lambda x: x[1]) ('Alice', 94)
-
min
(**kwargs)¶ Equivalent to the built-in function min( iterable, *[, key, default] )
Parameters: - key – keyword-only; function that returns the value to compare
- default – keyword-only; value to return if self is empty. Only available in Python 3.4 or later
Returns: smallest item in self
>>> grades = Iterable([('Charlie', 79), ('Alice', 94), ('Bob', 65)]) >>> grades.min(key=lambda x: x[1]) ('Bob', 65)
-
reduce
(function, initializer=None)¶ Equivalent to:
- Python 2.x: the built-in function reduce( function, iterable[, initializer] )
- Python 3.x: reduce( function, iterable[, initializer] ) in functools
Repeatedly applies function to sequence until one value is left
Parameters: - function – function that takes two values and returns a single value
- initializer – initial value combined with the first value in self
Returns: single value
>>> values = Iterable([1, 2, 5, 9]) >>> values.reduce(lambda a, b: a + b) 17 >>> values.reduce(lambda a, b: a + b, 10) 27
-
reversed
()¶ Equivalent to the built-in function reversed( seq )
Returns: self in the reversed order >>> names = Iterable(['Bob', 'Alice', 'Daniel', 'Charlie']) >>> names.reversed().to_list() ['Charlie', 'Daniel', 'Alice', 'Bob']
-
single
(filter_by=None, default=None)¶ Equivalent to calling first(), except it raises ValueError if iterable contains more than one element
Parameters: - filter_by – keyword-only; function used to filter unwanted values
- default – keyword-only value to return if self is empty after filtered by filter_by
Returns: value of self filtered by filter_by
Raises ValueError: iterable contains more than one element after being filtered by filter_by
>>> values = Iterable([1, 2, 5, 9]) >>> values.single() ValueError: iterable [1, 2, 5, 9] contains more than one element >>> values.single(filter_by=lambda x: x > 1) ValueError: iterable [2, 5, 9] contains more than one element >>> values.single(filter_by=lambda x: x > 5) 9 >>> values.single(filter_by=lambda x: x > 10) # Returns None >>> values.single(filter_by=lambda x: x > 10, default=0) 0
-
skip
(count)¶ Skips the first count elements in iterable
- This function will convert the iterable to a sequence type before retrieving the values
- If count is equal to or greater than the length of iterable, no elements are taken
Parameters: count – number of values to skip Returns: Iterable containing all the elements of iterable without the first count elements Raises ValueError: count is a negative value >>> values = Iterable([1, 2, 5, 9]) >>> values.skip(1).to_list() [2, 5, 9] >>> values.skip(3).to_list() [9] >>> values.skip(10).to_list() [] >>> values.take(-1).to_list() ValueError: 'count' must be greater than 0
-
sorted
(**kwargs)¶ Equivalent to the built-in function sorted( iterable[, cmp[, key[, reverse]]] )
Parameters: - cmp – keyword-only; custom comparison function. Only available in Python 2.x
- key – keyword-only; function that returns the value to compare
- reverse – keyword-only; boolean; if True, self is sorted with the largest value first
Returns: a sorted Iterable
>>> grades = Iterable([('Charlie', 79), ('Alice', 94), ('Bob', 65)]) >>> grades.sorted().to_list() [('Alice', 94), ('Bob', 65), ('Charlie', 79)] >>> grades.sorted(key=lambda x: x[1]).to_list() [('Bob', 65), ('Charlie', 79), ('Alice', 94)] >>> grades.sorted(key=lambda x: x[1], reverse=True).to_list() [('Alice', 94), ('Charlie', 79), ('Bob', 65)]
-
sum
(start=0)¶ Equivalent to the built-in function sum( iterable[, start] )
Parameters: start – starting value; default is 0 Returns: sum of all values in Iterable >>> numbers = Iterable([1, 3, 10, 4, 8]) >>> numbers.sum() 26 >>> numbers.sum(10) 36
-
symmetric_difference
(iterable)¶ Equivalent to calling set( left ).symmetric_difference( set( right ) )
Parameters: iterable – iterable to perform symmetric difference against Returns: Iterable with distinct values found in either self or iterable but not both >>> left = [2, 10, 1982, -5, 9, 10] >>> right = [1982, -10, -5, 1982, 98] >>> Iterable(left).symmetric_difference(right).to_list() [98, 2, 9, 10, -10]
-
take
(count)¶ Gets the first count elements in iterable
- This function will convert the iterable to a sequence type before retrieving the values
- If count is equal to or greater than the length of iterable, all elements are taken
Parameters: count – number of values to retrieve Returns: Iterable comprised of the first count elements Raises ValueError: count is a negative value >>> values = Iterable([1, 2, 5, 9]) >>> values.take(1).to_list() [1] >>> values.take(3).to_list() [1, 2, 5] >>> values.take(10).to_list() [1, 2, 5, 9] >>> values.take(-1).to_list() ValueError: 'count' must be greater than 0
-
to_frozenset
()¶ Equivalent to the built-in type frozenset( iterable )
Returns: frozenset >>> numbers = Iterable([10, 7, 28, 7, 19, 19, 70]) >>> numbers <pyiterable.iterable.Iterable object at 0x017BA610> >>> numbers.to_frozenset() frozenset({10, 19, 28, 70, 7})
-
to_list
()¶ Equivalent to the built-in function list( iterable )
Returns: list >>> grades = Iterable([('Alice', 94), ('Bob', 65), ('Charlie', 79), ('Daniel', 70)]) >>> grades <pyiterable.iterable.Iterable object at 0x017BACB0> >>> grades.to_list() [('Alice', 94), ('Bob', 65), ('Charlie', 79), ('Daniel', 70)]
-
to_set
()¶ Equivalent to the built-in function set( iterable )
Returns: set >>> numbers = Iterable([10, 7, 28, 7, 19, 19, 70]) >>> numbers <pyiterable.iterable.Iterable object at 0x017BA610> >>> numbers.to_set() {10, 19, 28, 70, 7}
-
to_tuple
()¶ Equivalent to the built-in function tuple( iterable )
Returns: tuple >>> numbers = Iterable([10, 7, 28, 7, 19, 19, 70]) >>> numbers <pyiterable.iterable.Iterable object at 0x0130FE70> >>> numbers.to_tuple() (10, 7, 28, 7, 19, 19, 70)
-
union
(iterable)¶ Equivalent to calling set( left ).union( set( right ) )
Parameters: iterable – iterable to union with self Returns: Iterable with distinct values in either self or iterable >>> left = [2, 10, 2, 2, 5, 9, 10] >>> right = [1982, -10, 5, 1982, 9] >>> Iterable(left).union(right).to_list() [2, 5, 9, 10, -10, 1982]
-
zip
(*args)¶ Equivalent to the built-in function zip( [iterable, ...] )
Parameters: args – any number of iterable objects Returns: list of tuples; i-th tuple contains all elements from each i-th element in self and *args >>> left = Iterable(['Alice', 'Bob', 'Charlie', 'Daniel']) >>> left.zip([94, 65, 79, 70]).to_list() [('Alice', 94), ('Bob', 65), ('Charlie', 79), ('Daniel', 70)]
-