Python 列表 append 的返回值
我想创建一个简单的二叉树,样子像这个图片:
基本上是空的,只有最后的一些值,所以我创建了一个根列表:
root = [list(),list()]
然后我写了一个递归函数来填充这个树:
def TF(nodeT,nodeF , i):
if i == 35 : return 'done'
TF(nodeT.append([]),nodeT.append([]) , i = i + 1) #append T , F in the true node
TF(nodeF.append([]),nodeT.append([]) , i = i + 1) #append T , F in the false node
我的问题很简单,Python中的list.append(something)会返回“None”,所以每当这个函数再次被调用时(比如TF(None, None, 1)),None.append就不存在了。
我该怎么解决这个问题呢?提前谢谢你。
另外,如果你有任何建议,能让我这个代码更高效或者用其他方式实现(我还没测试过我的代码,所以不确定效果如何)
(我最终的目标是得到一个真假的映射和一个参数,比如:“FTFTFFFTFTF”会对应字母“M”等等……)
7 个回答
4
别往列表里添加东西,直接创建新的列表。顺便说一下,Python有自己特别的数据结构哦 :P
class BinTree(object):
def __init__(self, left=None, right=None):
self.left = left
self.right = right
def __str__(self):
return " (%s, %s) " % (self.left, self.right)
def maketree( depth ):
if depth == 0:
return BinTree( True, False )
return BinTree(
maketree( depth-1 ),
maketree( depth-1 ))
print maketree( 4 )
如果你真的非常想要列表,那就把 BinTree( x, y )
替换成 [x,y]
。
20
要解决你提的这个问题,你可以这样做:
def list_append(lst, item):
lst.append(item)
return lst
然后使用 list_append(lst, item)
这个命令,它会把 item
加到 lst
这个列表里,并且最后会把更新后的 lst
返回给你。
30
在Python中,你可以用“+”这个符号把两个列表连接在一起,而不会改变原来的列表。我想这正是你问题标题中想要做的事情。因此,
[1, 2] + [3]
会返回
[1, 2, 3]
这样你就可以更“函数化”地使用它。如果你需要的话,
[1, 2].__add__([3])
和之前的表达式是等价的。