web.py web.utils.iterbetter.py

"""
web.utils.iterbetter.py

Help on IterBetter in module web.utils object:
class IterBetter(builtins.object)
 |  Returns an object that can be used as an iterator
 |  but can also be used via __getitem__ (although it
 |  cannot go backwards -- that is, you cannot request
 |  `iterbetter[0]` after requesting `iterbetter[1]`).
 |
 |      >>> import itertools
 |      >>> c = iterbetter(itertools.count())
 |      >>> c[1]
 |      1
 |      >>> c[5]
 |      5
 |      >>> c[3]
 |      Traceback (most recent call last):
 |          ...
 |      IndexError: already passed 3
 |
 |  It is also possible to get the first value of the iterator or None.
 |
 |      >>> c = iterbetter(iter([3, 4, 5]))
 |      >>> print(c.first())
 |      3
 |      >>> c = iterbetter(iter([]))
 |      >>> print(c.first())
 |      None
 |
 |  For boolean test, IterBetter peeps at first value in the iterator without effecting the iteration.
 |
 |      >>> c = iterbetter(iter(range(5)))
 |      >>> bool(c)
 |      True
 |      >>> list(c)
 |      [0, 1, 2, 3, 4]
 |      >>> c = iterbetter(iter([]))
 |      >>> bool(c)
 |      False
 |      >>> list(c)
 |      []
 |
 |  Methods defined here:
 |
 |  __bool__ = __nonzero__(self)
 |
 |  __getitem__(self, i)
 |
 |  __init__(self, iterator)
 |      Initialize self.  See help(type(self)) for accurate signature.
 |
 |  __iter__(self)
 |
 |  __nonzero__(self)
 |
 |  first(self, default=None)
 |      Returns the first element of the iterator or None when there are no
 |      elements.
 |
 |      If the optional argument default is specified, that is returned instead
 |      of None when there are no elements.
 |
 |  ----------------------------------------------------------------------
 |  Data descriptors defined here:
 |
 |  __dict__
 |      dictionary for instance variables (if defined)
 |
 |  __weakref__
 |      list of weak references to the object (if defined)


"""
import web
import itertools

# 1.
print("1.")
c = web.utils.iterbetter(itertools.count())
print("c:", c)
# c: <web.utils.IterBetter object at 0x0000026E4A596EF0>
print("c[0]:", c[0])
# c[0]: 0
print("c[1]:", c[1])
# c[1]: 1
print("c[5]:", c[5])
# c[5]: 5
# print("c[3]:", c[3])  # IndexError: already passed 3


# 2.
print("2.")
c = web.utils.iterbetter(iter([3, 4, 5]))
print(c.first())
# 3
c = web.utils.iterbetter(iter([]))
print(c.first())
# None

# 3.
print("3.")
c = web.utils.iterbetter(iter(range(5)))
print(bool(c))
# True
print(list(c))
# [0, 1, 2, 3, 4]
c = web.utils.iterbetter(iter([]))
print(bool(c))
# False
print(list(c))
# []



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值