代码
"""
start: 切片开始位置,默认为0
end: 切片截至位置(不包含该位置),默认列表长度 len(列表)
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])
print(alist[0:110])
print(alist[100:0])
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()
return self.staffs
def __getitem__(self, item):
"""实现切片对象的关键"""
cls = type(self)
if isinstance(item, slice):
return cls(self.group_name, self.company_name, self.staffs[item])
elif isinstance(item, int):
return cls(self.group_name, self.company_name, [self.staffs[item]])
def __len__(self):
return len(self.staffs)
def __iter__(self):
return iter(self.staffs)
def __contains__(self, item):
return True if item in self.staffs else False
group = Group("imooc", "user", ["1","2","3"])
print(group[0:2])
print(group[1])
print("1" in group)
print(reversed(group))
for i in group:
print(i)
print(len(group) )