File tree 2 files changed +36
-0
lines changed
2 files changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -82,6 +82,26 @@ func (r *Range) M__iter__() (Object, error) {
82
82
}, nil
83
83
}
84
84
85
+ func (r * Range ) M__len__ () (Object , error ) {
86
+ var lo , hi , step Int
87
+ if r .Step > 0 {
88
+ lo = r .Start
89
+ hi = r .Stop
90
+ step = r .Step
91
+ } else {
92
+ lo = r .Stop
93
+ hi = r .Start
94
+ step = (- r .Step )
95
+ }
96
+
97
+ if lo >= hi {
98
+ return Int (0 ), nil
99
+ }
100
+
101
+ res := (hi - lo - 1 )/ step + 1
102
+ return res , nil
103
+ }
104
+
85
105
// Range iterator
86
106
func (it * RangeIterator ) M__iter__ () (Object , error ) {
87
107
return it , nil
Original file line number Diff line number Diff line change
1
+ # Copyright 2018 The go-python Authors. All rights reserved.
2
+ # Use of this source code is governed by a BSD-style
3
+ # license that can be found in the LICENSE file.
4
+
5
+ doc = "range"
6
+ a = range (255 )
7
+ b = [e for e in a ]
8
+ assert len (a ) == len (b )
9
+ a = range (5 , 100 , 5 )
10
+ b = [e for e in a ]
11
+ assert len (a ) == len (b )
12
+ a = range (100 ,0 , 1 )
13
+ b = [e for e in a ]
14
+ assert len (a ) == len (b )
15
+
16
+ doc = "finished"
You can’t perform that action at this time.
0 commit comments