*Memo:
- My post explains an iterator (1).
- My post explains an iterator (3).
- My post explains an iterator (4).
- My post explains an iterator (5).
- My post explains an iterator (6).
An iterator can be used indirectly with len() after using list(), tuple(), set() and frozenset() and directly with more_itertools.ilen() to get the length as shown below:
*Memo:
-
more-itertoolsmust be installed withpip install more-itertools. - An iterator cannot be directly used with
len()to get the length.
from copy import copy
from more_itertools import ilen
v1 = iter([0, 1, 2, 3, 4])
v2 = copy(v1)
print(len(list(v2)))
# 5
v2 = copy(v1)
print(len(tuple(v2)))
# 5
v2 = copy(v1)
print(len(set(v2)))
# 5
v2 = copy(v1)
print(len(frozenset(v2)))
# 5
v2 = copy(v1)
print(ilen(v2))
# 5
v2 = copy(v1)
print(len(v2))
# TypeError: object of type 'list_iterator' has no len()
A non-empty iterator and empty iterator are:
-
True, checking them with bool() respectively. -
False, inverting their truth values withnotkeyword respectively.
# Non-empty iterator
print(bool(iter([0])))
print(bool(iter([iter([])])))
# Empty iterator
print(bool(iter([])))
# True
# Non-empty iterator
print(not iter([0]))
print(not iter([iter([])]))
# Empty iterator
print(not iter([]))
# False
An iterator can be checked if a specific element is and isn't in the iterator with in keyword and with not and in keyword respectively as shown below:
v = iter(['A', iter(['B', 'C'])])
print('A' in v)
# True
print('B' in v)
print('C' in v)
print(['A'] in v)
print(['B'] in v)
print(['C'] in v)
print(['B', 'C'] in v)
print(['A', ['B', 'C']] in v)
print(iter(['A']) in v)
print(iter(['B']) in v)
print(iter(['C']) in v)
print(iter(['B', 'C']) in v)
print(iter(['A', iter(['B', 'C'])]) in v)
print(iter(['A', ['B', 'C']]) in v)
print(['A', iter(['B', 'C'])] in v)
# False
v = iter(['A', iter(['B', 'C'])])
print('A' not in v)
# False
print('B' not in v)
print('C' not in v)
print(['A'] not in v)
print(['B'] not in v)
print(['C'] not in v)
print(['B', 'C'] not in v)
print(['A', ['B', 'C']] not in v)
print(iter(['A']) not in v)
print(iter(['B']) not in v)
print(iter(['C']) not in v)
print(iter(['B', 'C']) not in v)
print(iter(['A', iter(['B', 'C'])]) not in v)
print(iter(['A', ['B', 'C']]) not in v)
print(['A', iter(['B', 'C'])] not in v)
# True
An iterator can be checked if the iterator is and isn't referred to by two variables with is keyword and with is and not keyword respectively as shown below:
v1 = iter([0, 1, 2])
v2 = iter([0, 1, 2])
v3 = v1
print(v1 is v2) # False
print(v1 is v3) # True
print(v1 is not v2) # True
print(v1 is not v3) # False
An iterator and other iterator can be checked if all the elements in them are and aren't the same with == and != respectively as shown below:
v = iter([0, 1, 2])
print(v == iter([0, 1, 2])) # False
print(v == iter([0, 1])) # False
print(v == iter([0, 3])) # False
print(v == iter([0, 1, 2, 3])) # False
print(v == iter([0, 1, 3, 4])) # False
print(v == iter([])) # False
v = iter([0, 1, 2])
print(v != iter([0, 1, 2])) # True
print(v != iter([0, 1])) # True
print(v != iter([0, 3])) # True
print(v != iter([0, 1, 2, 3])) # True
print(v != iter([0, 1, 3, 4])) # True
print(v != iter([])) # True
An iterator and other iterator cannot be checked if all the elements in:
- the iterator are in other iterator with
<=. - other iterator are in the iterator with
>=. - the iterator and other elements are in other iterator with
<. - other iterator and other elements are in the iterator with
>.
v = iter([0, 1, 2])
print(v <= iter([0, 1, 2]))
# TypeError: '<=' not supported between instances of 'list_iterator' and
# 'list_iterator'
print(v >= iter([0, 1, 2]))
# TypeError: '>=' not supported between instances of 'list_iterator' and
# 'list_iterator'
print(v < iter([0, 1, 2]))
# TypeError: '<' not supported between instances of 'list_iterator' and
# 'list_iterator'
print(v > iter([0, 1, 2]))
# TypeError: '>' not supported between instances of 'list_iterator' and
# 'list_iterator'
An iterator and other iterator cannot be checked if they have and don't have their common elements with bool() and & and with not keyword and & respectively as shown below:
v = iter([0, 1, 2])
print(bool(v & iter([1, 3])))
print(not (v & iter([1, 3])))
# TypeError: unsupported operand type(s) for &: 'list_iterator' and
# 'list_iterator'
Top comments (0)