gpt4 book ai didi

python - 如何在我的类中实现 str 函数?

转载 作者:太空宇宙 更新时间:2023-11-03 21:41:18 25 4
gpt4 key购买 nike

我创建了这个返回向量非零值的类。

class SparVec:

def __init__(self,length):
self.val={}
self.len=length

def __len__(self):
return self.len

def __getitem__(self, index):
return self.val.get(index,0)
def __setitem__(self,index,value):
if value !=0:
self.val[index]=value
self.len=max(index,self.len)
# Adding vectors
def __add__(self, other):
# Add Two vectors
length=self.len
result=SparVec(length)
for index in self.val:
result[index]=self[index]+other[index]
for index in other.val:
if index not in self.val:
result[index]=other[index]
return result

def nonzeros(self):
return 'Sparse Vector {}'.format(self.val)

if __name__ == '__main__':

a = SparVec(4)
a[2] = 9.2
a[0] = -1
a[3] = 0
print a
print a.nonzeros()

b = SparVec(5)
b[1] = 1
print b
print b.nonzeros()

c = a+b
print c
print c.nonzeros()

到目前为止一切顺利。我用非零函数得到了我想要的值。问题是当我打印a或b时如何得到以下输出。提示:无需创建一个新列表,将所有项目存储为零,然后打印它。

print a
[0]=-1 [1]=0 [2]=9.2 [3]=0

最佳答案

您可以将 str.join 与生成器表达式结合使用,该表达式会迭代稀疏向量的长度并输出默认值为 0 的键值对:

def __str__(self):
return ' '.join('[{}]={}'.format(i, self.val.get(i, 0)) for i in range(self.len))

关于python - 如何在我的类中实现 str 函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52840629/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com