我理解切片符号。但是需要一些帮助。
下面的代码遍历并打印二叉树。有人可以在self.preorder_print(self.root, "")[:-1]
函数中解释print_tree
行在这里做了什么吗?
class Node(object):
def __init__(self, value):
self.value = value
self.left = None
self.right = None
class BinaryTree(object):
def __init__(self, root):
self.root = Node(root)
def search(self, find_val):
return self.preorder_search(self.root, find_val)
def print_tree(self):
return self.preorder_print(self.root, "")[:-1]
def preorder_search(self, start, find_val):
if start:
if start.value == find_val:
return True
else:
return self.preorder_search(start.left, find_val) or self.preorder_search(start.right, find_val)
return False
def preorder_print(self, start, traversal):
if start:
traversal += ("-" + str(start.value))
traversal = self.preorder_print(start.left, traversal)
traversal = self.preorder_print(start.right, traversal)
return traversal
答案 0 :(得分:1)
[: - 1]是一个切片表示法,它允许对那些实现它的对象进行分段,使用方法如下[start:end:step] start 是初始值您希望开始获取元素的位置,同样 end 是停止的位置,如果是负数,它将从最后计算多个位置,如果您不知道对象有多长,则非常有用,步骤允许跳过不同于1的元素和/或如果是负数则反向取消,每个都可以省略,在这种情况下它们采用适当的默认值
例如
>>> "123"[:-1]
'12'
>>>
是删除最后一个元素,所以在你的情况下preorder_print
返回一个字符串,用[:-1]删除最后一个字符
here您可以找到有关切片符号的更多信息