File tree Expand file tree Collapse file tree 1 file changed +24
-13
lines changed Expand file tree Collapse file tree 1 file changed +24
-13
lines changed Original file line number Diff line number Diff line change @@ -46,6 +46,19 @@ def __init__(self):
46
46
self .id = 0
47
47
self .step = 1
48
48
49
+ def __iter__ (self ):
50
+ """返回迭代器"""
51
+ return self
52
+
53
+ def __next__ (self ):
54
+ """返回下一个要抽取的Person对象"""
55
+ if len (self .people ) == 0 :
56
+ raise StopIteration
57
+
58
+ self .id = (self .id + self .step - 1 ) % len (self .people )
59
+ ret = self .people .pop (self .id )
60
+ return ret
61
+
49
62
def reset (self , start , step ):
50
63
"""设置起始位置和步进"""
51
64
self .id = start - 1
@@ -55,15 +68,15 @@ def append(self, target):
55
68
"""容器里添加Person对象"""
56
69
self .people .append (target )
57
70
58
- def next_yield (self ):
59
- """
60
- 创建生成器
61
- 每次返回一个要抽取的Person对象
62
- """
63
- for i in range (len (self .people )):
64
- self .id = (self .id + self .step - 1 ) % len (self .people )
65
- ret = self .people .pop (self .id )
66
- yield ret
71
+ # def next_yield(self):
72
+ # """
73
+ # 创建生成器
74
+ # 每次返回一个要抽取的Person对象
75
+ # """
76
+ # for i in range(len(self.people)):
77
+ # self.id = (self.id + self.step - 1) % len(self.people)
78
+ # ret = self.people.pop(self.id)
79
+ # yield ret
67
80
68
81
69
82
if __name__ == '__main__' :
@@ -84,10 +97,8 @@ def next_yield(self):
84
97
raise IndexError ("Out of range!" )
85
98
86
99
ring .reset (start , step )
87
- final = ring .next_yield ()
88
-
89
100
print ("\n The sequence after sorting is:\n " )
90
- for i in range ( len ( ring . people )) :
91
- final . __next__ () .print_data ()
101
+ for i in ring :
102
+ i .print_data ()
92
103
93
104
# *=====End File=====* #
You can’t perform that action at this time.
0 commit comments