cython
1# mode: run
2# tag: del, slicing
3
4def del_constant_start_stop(x):
5"""
6>>> l = [1,2,3,4]
7>>> del_constant_start_stop(l)
8[1, 2]
9
10>>> l = [1,2,3,4,5,6,7]
11>>> del_constant_start_stop(l)
12[1, 2, 7]
13"""
14del x[2:6]
15return x
16
17
18def del_start(x, start):
19"""
20>>> l = [1,2,3,4]
21>>> del_start(l, 2)
22[1, 2]
23
24>>> l = [1,2,3,4,5,6,7]
25>>> del_start(l, 20)
26[1, 2, 3, 4, 5, 6, 7]
27>>> del_start(l, 8)
28[1, 2, 3, 4, 5, 6, 7]
29>>> del_start(l, 4)
30[1, 2, 3, 4]
31
32>>> del_start(l, -2)
33[1, 2]
34>>> l
35[1, 2]
36>>> del_start(l, -2)
37[]
38>>> del_start(l, 2)
39[]
40>>> del_start(l, -2)
41[]
42>>> del_start(l, 20)
43[]
44
45>>> del_start([1,2,3,4], -20)
46[]
47>>> del_start([1,2,3,4], 0)
48[]
49"""
50del x[start:]
51return x
52
53
54def del_stop(x, stop):
55"""
56>>> l = [1,2,3,4]
57>>> del_stop(l, 2)
58[3, 4]
59
60>>> l = [1,2,3,4,5,6,7]
61>>> del_stop(l, -20)
62[1, 2, 3, 4, 5, 6, 7]
63>>> del_stop(l, -8)
64[1, 2, 3, 4, 5, 6, 7]
65>>> del_stop(l, -4)
66[4, 5, 6, 7]
67
68>>> del_stop(l, -2)
69[6, 7]
70>>> l
71[6, 7]
72>>> del_stop(l, -2)
73[6, 7]
74>>> del_stop(l, 2)
75[]
76>>> del_stop(l, -2)
77[]
78>>> del_stop(l, 20)
79[]
80
81>>> del_stop([1,2,3,4], -20)
82[1, 2, 3, 4]
83>>> del_stop([1,2,3,4], 0)
84[1, 2, 3, 4]
85"""
86del x[:stop]
87return x
88
89
90def del_start_stop(x, start, stop):
91"""
92>>> l = [1,2,3,4]
93>>> del_start_stop(l, 0, 2)
94[3, 4]
95>>> l
96[3, 4]
97
98>>> l = [1,2,3,4,5,6,7]
99>>> del_start_stop(l, -1, -20)
100[1, 2, 3, 4, 5, 6, 7]
101>>> del_start_stop(l, -20, -8)
102[1, 2, 3, 4, 5, 6, 7]
103>>> del_start_stop(l, -6, -4)
104[1, 4, 5, 6, 7]
105
106>>> del_start_stop(l, -20, -2)
107[6, 7]
108>>> l
109[6, 7]
110>>> del_start_stop(l, -2, 1)
111[7]
112>>> del_start_stop(l, -2, 3)
113[]
114>>> del_start_stop(l, 2, 4)
115[]
116
117>>> del_start_stop([1,2,3,4], 20, -20)
118[1, 2, 3, 4]
119>>> del_start_stop([1,2,3,4], 0, 0)
120[1, 2, 3, 4]
121"""
122del x[start:stop]
123return x
124