1#!/user/bin/env python2#
-*- coding:utf-8 -*-34
#模式[start:end:step]
5"""
6其中,第乙個數字start表示切片開始位置,預設為0;
7第二個數字end表示切片截止(但不包含)位置(預設為列表長度);
8第三個數字step表示切片的步長(預設為1)。
9當start為0時可以省略,當end為列表長度時可以省略,
10當step為1時可以省略,並且省略步長時可以同時省略最後乙個冒號。
11另外,當step為負整數時,表示反向切片,這時start應該比end的值要大才行。
12"""
13 alist = [3, 4, 5, 6, 7, 9, 11, 13, 15, 17]14#
返回包含原列表中所有元素的新列表
15print
(alist[::])16#
返回包含原列表中所有元素的逆序列表
17print(alist[::-1])18#
隔乙個取乙個,獲取偶數字置的元素
19print(alist[::2])20#
隔乙個取乙個,獲取奇數字置的元素
21print(alist[1::2])22#
指定切片的開始和結束位置
23print(alist[3:6])24#
切片結束位置大於列表長度時,從列表尾部截斷
25 alist[0:100]26#
切片開始位置大於列表長度時,返回空列表
27 alist[100:]
2829
#在列表尾部增加元素
30 alist[len(alist):] = [9]31#
在列表頭部插入元素
32 alist[:0] = [1, 2]33#
在列表中間位置插入元素
34 alist[3:3] = [4]35#
替換列表元素,等號兩邊的列表長度相等
36 alist[:3] = [1, 2]37#
等號兩邊的列表長度也可以不相等
38 alist[3:] = [4, 5, 6]39#
隔乙個修改乙個
40 alist[::2] = [0] * 3
41print
(alist)42#
隔乙個修改乙個
43 alist[::2] = ['
a', '
b', 'c'
]44#左側切片不連續,等號兩邊列表長度必須相等
45 alist[::2] = [1,2]46#
刪除列表中前3個元素
47 alist[:3] =
4849
#切片元素連續
50del alist[:3]51#
切片元素不連續,隔乙個刪乙個
52del alist[::2]
上述是切片常用的操作,下面**將實現乙個可切片的物件
1#!/user/bin/env python2#
-*- coding:utf-8 -*-
3import
numbers45
6class
group:
7"""
8支援切片操作
9"""
10def
__init__
(self, group_name, company_name, staffs):
11 self.group_name =group_name
12 self.company_name =company_name
13 self.staffs =staffs
1415
def__reversed__
(self):
16"""
17倒序
18"""
19self.staffs.reverse()
2021
def__getitem__
(self, item):
22"""
23實現這個函式之後,就可以進行切片操作
24"""
25 cls =type(self)
26if
isinstance(item, slice):
27return cls(group_name=self.group_name, company_name=self.company_name, staffs=self.staffs[item])
28elif
isinstance(item, numbers.integral):
29return cls(group_name=self.group_name, company_name=self.company_name, staffs=[self.staffs[item]])
3031
def__len__
(self):
32return
len(self.staffs)
3334
def__iter__
(self):
35"""
36實現可迭代
37"""
38return
iter(self.staffs)
3940
def__contains__
(self, item):
41"""
42if 'zy' in group:
43print('yes')
44"""
45if item in
self.staffs:
46return
true
47else:48
return
false
4950
51 staffs = ['
zy1', '
zy2', '
zy3'
]52 group = group(group_name='
user
', company_name='
imooc
', staffs=staffs)
53print(len(group))
實現可切片的物件
ist序列的切片說明 模式 start end step 其中,第乙個數字start表示切片開始位置,預設為0 第二個數字end表示切片截止 但不包含 位置 預設為列表長度 第三個數字step表示切片的步長 預設為1 當start為0時可以省略,當end為列表長度時可以省略,當step為1時可以省略...
5 4 實現可切片的物件
list序列的切片說明 模式 start end step 其中,第乙個數字start表示切片開始位置,預設為0 第二個數字end表示切片截止 但不包含 位置 預設為列表長度 第三個數字step表示切片的步長 預設為1 當start為0時可以省略,當end為列表長度時可以省略,當step為1時可以省...
python切片的物件 Python切片物件和
python中是否存在某種內部機制,它以不同的方式處理傳遞給 getitem 的引數,並自動將start stop step構造轉換為片?在 這是我的意思class exampleclass object def getitem self,args return args def call self...