类的切片与索引的实现1
时间:2019-01-17
本文章向大家介绍类的切片与索引的实现1,主要包括类的切片与索引的实现1使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在这里插入int, float, str,
list: 特性:(增删改查, 索引, 切片, 重复, 循环<迭代>, 连接)
dict,
tuple,
set
# 1. python里面一切皆对象;
# 2. 如何给自己编写的类实现切片和索引的功能?
# 3. 实现索引的几个魔术方法?
def __getitem__(self, y): # real signature unknown; restored from __doc__
# x.__getitem__(y) <==> x[y]
pass
li[0]
"""
class Student(object):
def __init__(self, name, scores):
self.name = name
self.scores = scores
# 索引的是学生的成绩
def __getitem__(self, index): # 1).索引值的获取
print(index, type(index))
return self.scores[index]
def __setitem__(self, key, value): # 2). 索引值的重新赋值
self.scores[key] = value
def __delitem__(self, key): # 3). 删除索引值
del self.scores[key]
def __mul__(self, other): # 4). 实现*的效果, 具体返回什么取决于代码的业务需求
"""对于学生的每一门成绩乘3"""
return [i*other for i in self.scores]
def __add__(self, other): # 5). 连接的时候必须是同一种数据;类型
# 将两个学生的成绩拼接起来
return self.scores + other.scores
def __contains__(self, item): # 6). 判断某个元素是否存在于这个对象中?
return item in self.scores
def __iter__(self): # 7). 迭代, 使得该对象可以实现for循环
# 将列表转换为迭代的类型, 可以for循环, 一定要返回iter类型的数据;
return iter(self.scores)
def __lt__(self, other): # 8). 比较两个对象的大小;
return (sum(self.scores)/3) < (sum(other.scores)/3)
liming = Student('liming', [100, 89, 100])
# # 1).索引值的获取
# print(liming[0])
# print(liming[1])
# print(liming[2])
#
# # 2).索引值的重新赋值
# liming[0] = 90
# print(liming[0])
#
# # 3). 删除索引值
# del liming[0]
# # print(liming[:2])
#
# # 1).切片值的获取
# print(liming[:2])
# print(liming[-2:])
#
#
# # 2).切片值的重新赋值
# liming[:2] = [10, 10]
# print(liming.scores)
#
# # 3). 删除切片值
# del liming[:2]
# print(liming.scores)
#
# # 4). 判断是否可以重复?
# print(liming * 3)
#
# # 5). 连接?
xiaohong = Student('小红', [100, 90, 90])
# print(xiaohong + liming)
#
#
#
# # 6). 成员操作符? 判断是否在对象里面存在?
# print(100 in xiaohong)
# print(101 in xiaohong)
# print(101 not in xiaohong)
#
#
# # 7). 实现for循环?
# for item in liming:
# print(item)
# 8). 比较对象的大小?
# print(liming > xiaohong)
print(liming < xiaohong)代码片
# # 1).索引值的获取
print(liming[0])
print(liming[1])
print(liming[2])
liming[0] = 90
print(liming[0])
# # 3). 删除索引值
# del liming[0]
# # print(liming[:2])
# # 1).切片值的获取
print(liming[:2])
print(liming[-2:])
# 2).切片值的重新赋值
liming[:2] = [10, 10]
print(liming.scores)
# 3). 删除切片值
del liming[:2]
print(liming.scores)
# # 4). 判断是否可以重复?
print(liming * 3)
# # 5). 连接?
xiaohong = Student('小红', [100, 90, 90])
print(xiaohong + liming)
# 6). 成员操作符? 判断是否在对象里面存在?
print(100 in xiaohong)
print(101 in xiaohong)
print(101 not in xiaohong)
#7). 实现for循环?
for item in liming:
print(item)
# 8). 比较对象的大小?
print(liming > xiaohong)
print(liming < xiaohong)
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- Java常用设计模式-单例模式(Singleton Pattern)
- Java常用设计模式--三种工厂模式之简单工厂模式(Simple Factory)
- Java常用设计模式--三种工厂模式之工厂模式(Factory Pattern)
- Java常用设计模式--三种工厂模式之抽象工厂模式(Abstract Factory Pattern)
- Mongodb只读副本集如何切换到读写模式
- Java常用设计模式--策略模式(Strategy Pattern)
- Mongodb只读副本集如何切换到读写模式(下)
- 手把手带你搭建redis集群
- Jvm常量池、运行时常量池、字符串常量池理解
- 【Docker】命令使用大全
- Apache如何设置Enable Keep-Alive
- 【Docker】项目实战,部署自己的APP
- 用云开发快速构建最美AI毕业照小程序
- 13-2 vi-启动和退出
- Java中四种引用类型:强引用,软引用,弱引用,虚引用