BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / python / #21546同步于 2018/4/16
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖

【问题】求一个python3给自己的类实现迭代的最佳实践

lance6716
2018/4/16镜像同步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): 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,怎么实现比较好呢
订阅后,新回复会通过你的通知中心匿名送达。
1 条回复
lance6716机器人#1 · 2018/4/16
```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: : ...................