返回信息流```python
class Test:
def __init__(self):
self.A = [1, 11, 21]
self.B = [10, 20, 30]
self.C = [3, 5, 12, 12, 13]
def __iter__(self):
i = 0
for a, b in zip(self.A, self.B):
ret = [a]
while i < len(self.C) and a <= self.C[i] and self.C[i] <= b:
ret.append(self.C[i])
i += 1
ret.append(b)
yield ret
t = Test()
for x in t:
print(x)
# output:
# [1, 3, 5, 10]
# [11, 12, 12, 13, 20]
# [21, 30]
```
这个效果的一个类,因为有了判断数组索引越界感觉不那么pythonic,违反了EAFP,怎么实现比较好呢
这是一条镜像帖。来源:北邮人论坛 / python / #21546同步于 2018/4/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
【问题】求一个python3给自己的类实现迭代的最佳实践
lance6716
2018/4/16镜像同步1 回复
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
```python
class Test:
def __init__(self):
self.A = [1, 11, 21]
self.B = [10, 20, 30]
self.C = [3, 5, 12, 12, 13]
def __iter__(self):
for a, b in zip(self.A, self.B):
ret = [c for c in self.C if a <= c <= b]
yield [a] + ret + [b]
```
这样有点冗余的循环
【 在 lance6716 的大作中提到: 】
: [md]
: ```python
: class Test:
: ...................