Commit | Line | Data |
---|---|---|
86530b38 AT |
1 | |
2 | ||
3 | class Slicer: | |
4 | """ | |
5 | Slicer(list) takes a list as argument. When a Slicer | |
6 | object is subscribted it returns a sublist of the list. | |
7 | For example: | |
8 | ||
9 | s = Slicer(range(0,64)) | |
10 | s[0] => [0] | |
11 | s[0,2] => [0,2] | |
12 | s[0:2] => [0,1] | |
13 | s[0:2,4] => [0,1,4] | |
14 | s[0:4:2] => [0,2,4] | |
15 | s[0:2,4:6] => [0,1,4,5] | |
16 | ||
17 | """ | |
18 | def __init__(self,list): | |
19 | self.list = list | |
20 | ||
21 | def __getitem__(self,index): | |
22 | if type(index) == tuple: | |
23 | l = [] | |
24 | for i in index: | |
25 | if type(i) == slice: | |
26 | l.extend(self.list[i]) | |
27 | else: | |
28 | l.append(self.list[i]) | |
29 | return l | |
30 | elif type(index) == slice: | |
31 | return self.list[index] | |
32 | else: | |
33 | return [self.list[index]] | |
34 | ||
35 | ||
36 | if __name__ == '__main__': | |
37 | s=Slicer(range(0,64)) | |
38 | ||
39 | print s[0] | |
40 | print s[0:32] | |
41 | print s[0,8,16,56,64] | |
42 | print s[0:32:8] | |
43 | print s[0:8,8:16] | |
44 | print s[0:8,8:16,32,56:64] | |
45 | ||
46 | ||
47 | ||
48 |