我的任务是尝试为python重新创建ArrayList类型的方法。除了str和repr函数之外,我已经成功地重新创建了所有内容,但由于它们的行为大致相同,所以我只需要帮助。下面是我的方法代码,但我不断收到类型错误说明"只能加入一个可迭代的"
def __str__(self):
"""Implements `str(self)`. Returns '[]' if the list is empty, else
returns `str(x)` for all values `x` in this list, separated by commas
and enclosed by square brackets. E.g., for a list containing values
1, 2 and 3, returns '[1, 2, 3]'."""
str= '['
if len(self.data)>0:
for i in range(len(self.data)):
if i ==0:
str1 = str+''.join(self[i])
else:
str1 = str+','+ ''.join(self[i])
return str1+']'
else:
return '[]'
所有这一切只有一个问题,那就是我只能调用以下方法来帮助,尽管这不应该是对这种方法的限制。请帮助!
方法: lst [i]用于获取和设置现有的正索引i的值
len(lst)获取插槽数
lst.append(无)在%time时将列表增加一个插槽
del lst [len(lst)-1]删除列表中的最后一个插槽
答案 0 :(得分:0)
关键是你可以对列表的元素使用str()
;由于您的__str__()
未调用str(self)
,因此您将无法进行无限递归。
这是一种方法。
#UNTESTED
def __str__(self):
"""Implements `str(self)`. Returns '[]' if the list is empty, else
returns `str(x)` for all values `x` in this list, separated by commas
and enclosed by square brackets. E.g., for a list containing values
1, 2 and 3, returns '[1, 2, 3]'."""
# Assuming that SELF implements iteration
return '[' + ', '.join(str(x) for x in self) + ']'
# Assuming that iteration isn't implemented
return '[' + ', '.join(str(self[i]) for i in range(len(self))) + ']'