實現可切片的物件

2021-08-29 20:19:19 字數 2212 閱讀 4040

ist序列的切片說明:

#模式[start:end:step]

"""其中,第乙個數字start表示切片開始位置,預設為0;

第二個數字end表示切片截止(但不包含)位置(預設為列表長度);

第三個數字step表示切片的步長(預設為1)。

當start為0時可以省略,當end為列表長度時可以省略,

當step為1時可以省略,並且省略步長時可以同時省略最後乙個冒號。

另外,當step為負整數時,表示反向切片,這時start應該比end的值要大才行。

"""alist = [3, 4, 5, 6, 7, 9, 11, 13, 15, 17]

print (alist[::])  # 返回包含原列表中所有元素的新列表

print (alist[::-1])  # 返回包含原列表中所有元素的逆序列表

print (alist[::2])  # 隔乙個取乙個,獲取偶數字置的元素

print (alist[1::2])  # 隔乙個取乙個,獲取奇數字置的元素

print (alist[3:6])  # 指定切片的開始和結束位置

alist[0:100]  # 切片結束位置大於列表長度時,從列表尾部截斷

alist[100:]  # 切片開始位置大於列表長度時,返回空列表

alist[len(alist):] = [9]  # 在列表尾部增加元素

alist[:0] = [1, 2]  # 在列表頭部插入元素

alist[3:3] = [4]  # 在列表中間位置插入元素

alist[:3] = [1, 2]  # 替換列表元素,等號兩邊的列表長度相等

alist[3:] = [4, 5, 6]  # 等號兩邊的列表長度也可以不相等

alist[::2] = [0] * 3  # 隔乙個修改乙個

print (alist)

alist[::2] = ['a', 'b', 'c']  # 隔乙個修改乙個

alist[::2] = [1,2]  # 左側切片不連續,等號兩邊列表長度必須相等

alist[:3] =  # 刪除列表中前3個元素

del alist[:3]  # 切片元素連續

del alist[::2]  # 切片元素不連續,隔乙個刪乙個

是否可以建立乙個物件,可以實現切片功能呢?

import numbers

class group:

#支援切片操作

def __init__(self, group_name, company_name, staffs):

self.group_name=group_name

self.company_name=company_name

self.staffs=staffs

def __reversed__(self):

self.staffs.reverse()

def __getitem__(self, item):

return self.staffs[item]

def __len__(self):

return len(self.staffs)

def __iter__(self):

return iter(self.staffs)

def __contains__(self, item):

if item in self.staffs:

return true

else:

return false

staffs=['bobby1', 'imooc', 'bobby2', 'bobby3']

group = group(company_name='imooc', group_name='user', staffs=staffs)

print(group[0:3])   # __getitem__魔法函式實現了切片功能

print(group[2])     # __getitem__魔法函式實現的功能

reversed(group)     # __reversed__魔法函式實現的功能

# __iter__實現迭代

for user in group:

print(user)

# __len__實現的功能

print(len(group))

# __contain__實現的功能

if 'bobby1' in group:

print('yes')

5 4 實現可切片的物件

list序列的切片說明 模式 start end step 其中,第乙個數字start表示切片開始位置,預設為0 第二個數字end表示切片截止 但不包含 位置 預設為列表長度 第三個數字step表示切片的步長 預設為1 當start為0時可以省略,當end為列表長度時可以省略,當step為1時可以省...

4 3 實現可切片的物件

1 user bin env python2 coding utf 8 34 模式 start end step 5 6其中,第乙個數字start表示切片開始位置,預設為0 7第二個數字end表示切片截止 但不包含 位置 預設為列表長度 8第三個數字step表示切片的步長 預設為1 9當start為...

python切片的物件 Python切片物件和

python中是否存在某種內部機制,它以不同的方式處理傳遞給 getitem 的引數,並自動將start stop step構造轉換為片?在 這是我的意思class exampleclass object def getitem self,args return args def call self...