File tree Expand file tree Collapse file tree 2 files changed +8
-17
lines changed Expand file tree Collapse file tree 2 files changed +8
-17
lines changed Original file line number Diff line number Diff line change @@ -136,27 +136,12 @@ def __len__(self) -> int:
136
136
)
137
137
return self ._length
138
138
139
- def __getitem__ (self , index : int ) -> T :
139
+ def __getitem__ (self , index : int | slice ) -> T :
140
140
"""Get the node at the given index.
141
141
142
142
Complexity is O(n).
143
143
"""
144
- if index >= self ._length or index < - self ._length :
145
- raise IndexError (
146
- f"Index out of range: { index } not in range [-{ self ._length } , { self ._length } )"
147
- )
148
- if index < 0 :
149
- # Look up from the end of the list
150
- iterator = reversed (self )
151
- item = next (iterator )
152
- for _ in range (- index - 1 ):
153
- item = next (iterator )
154
- else :
155
- iterator = iter (self ) # type: ignore[assignment]
156
- item = next (iterator )
157
- for _ in range (index ):
158
- item = next (iterator )
159
- return item
144
+ return tuple (self )[index ]
160
145
161
146
def _insert_one_after (
162
147
self ,
Original file line number Diff line number Diff line change @@ -60,6 +60,9 @@ def test_append_multiple_elements(self):
60
60
self .assertEqual (linked_list [- 3 ], elems [0 ])
61
61
self .assertEqual (list (linked_list ), elems )
62
62
self .assertEqual (list (reversed (linked_list )), list (reversed (elems )))
63
+ self .assertEqual (list (linked_list [1 :2 ]), elems [1 :2 ])
64
+ self .assertEqual (list (linked_list [:2 ]), elems [:2 ])
65
+ self .assertEqual (list (linked_list [- 2 :]), elems [- 2 :])
63
66
64
67
def test_extend (self ):
65
68
elems = [_TestElement (i ) for i in range (3 )]
@@ -73,6 +76,9 @@ def test_extend(self):
73
76
self .assertEqual (linked_list [- 3 ], elems [0 ])
74
77
self .assertEqual (list (linked_list ), elems )
75
78
self .assertEqual (list (reversed (linked_list )), list (reversed (elems )))
79
+ self .assertEqual (list (linked_list [1 :2 ]), elems [1 :2 ])
80
+ self .assertEqual (list (linked_list [:2 ]), elems [:2 ])
81
+ self .assertEqual (list (linked_list [- 2 :]), elems [- 2 :])
76
82
77
83
@parameterized .parameterized .expand (
78
84
[
You can’t perform that action at this time.
0 commit comments