接上文。
PART
01
面向对象编程
现在有很多的的语言支持面向对象,比如最多的JAVA,PHP等,当然,Python也不例外,Python允许你来定义类(class)。类可以封装对象和函数来对它们进行操作。
有时候我们会用类来使代码更加干净整洁,解释类的用法的最简单的方式可能是构建一个有很多注释的例子。
如果Python中没有集合,那我们就需要自己去创建Set类。要实现的功能有:给定一个Set,我们需要能在其中加入(add)项目,移除(remove)项目,以及检查其中是否
包含(contains)某个值,我们把这些功能创建为成员(member)函数,意思是我们可以通过在Set对象后面加(.)来访问它们:
#按惯例,我们给下面的类起个PascalCase的名字(不知道的同学可以去搜索一下哦)
class Set(object):
#这些都是成员函数
#每个函数都取第一个参数"self"(另一种惯例)
#它表示所用到的特别的集合对象
#构造函数
def __init__(self, values=None):
self.dict = {} #Set的每一个实例都有自己的dict属性,我们会用这个属性来追踪成员关系
if values is not None:
for value in values:
self.add(value)
#返回一个对象的“官方”字符串表示
def __repr__(self):
return "Set: " + str(self.dict.keys())
#通过成为self.dict中对应值为True的键,来表示成员关系
def add(self, value):
self.dict[value] = True
#如果它在字典中是一个键,那么在集合中就是一个值
def contains(self, value):
return value in self.dict
#移除函数
def remove(self, value):
del self.dict[value]
PART
02
枚举
如果我们想在一个列表上迭代,并且同时使用它的元素和元素的索引,在Python中惯用的解决方案就是枚举(enumerate),它会产生(index, element)元组。
#一般用法
for i in range(len(documents)):
document = documents[i]
do_sth(i, document)
#或者下面这样
i = 0
for i in range(len(documents)):
do_sth(i, document)
i += 1
#Python枚举方法
for i, document in enumerate(documents):
do_sth(i, document)
#同样,如果你只想要索引,则执行:
for i in range(len(documents)):do_sth(i) #一般用法
for i, _ in enumerate(documents):do_sth(i) #python用法
数据科学中,我们会经常用到枚举,希望大家好好学习哦。
欢迎关注微信公众号,访问更多精彩:数据之魅。
如需转载,请联系授权,谢谢合作。