Python列表添加返回值

问题描述 投票:4回答:7

我想创建一个简单的二进制树后面这一形象:

基本清空,但最后的值,所以我创建的根目录:

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(东西),以便尽快功能再次调用(TF(无,无,1))None.append犯规存在。

我该如何解决这个问题?提前致谢。

此外,如果您有关于如何使这个更有效或以另一种方式的任何建议(从来没有来测试我的代码,所以我不知道它会怎么办)

(我的最终目标是拥有一个真正的假地图和参数,因此:“FTFTFFFTFTF”带来了字母“M”等)

python list
7个回答
18
投票

在Python中,你可以使用“+”操作符来连接两个列表离开原件不变。我想这就是你要根据你的问题的标题做什么。从而

[1, 2] + [3] 

将返回

[1, 2, 3]

所以你可以用它更多的是“功能性的时尚”。万一你需要它

[1, 2].__add__([3])

是等同于之前的表达。


17
投票

为了解决您的具体问题,你可以这样做:

def list_append(lst, item):
  lst.append(item)
  return lst

然后list_append(lst, item)将追加itemlst,然后返回lst


4
投票

不添加到列表中,创建它们。 Python有自定义的数据结构BTW: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]


3
投票

您可以附加,然后再通过参考:

nodeT.append([])
TF(nodeT, nodeT, i + 1)

但是,你的功能是没有意义的我。即使它没有任何意义,这将导致2 ** 35函数调用TF,这将需要比较长的时间才能完成。


1
投票

有一个更好的方式来创建一个二叉树,但我不明白你想用它做什么。

下面是代码:

>>> def tree(i):
    if i == 0:
        return ['T', 'F']
    return [tree(i-1), tree(i-1)]

>>> tree(3)
[[[['T', 'F'], ['T', 'F']], [['T', 'F'], ['T', 'F']]], [[['T', 'F'], ['T', 'F']], [['T', 'F'], ['T', 'F']]]]

1
投票

添加到@csierra的答案 - 我upvoted作为最直接的回答OP:在

+  [a,b]

(与周围的加数单个托架)是像list.extend([a,b])

       [ 1, 2, 3,4]  + [5,6]

出[6]:[1,2,3,4,5,6]

+  [[a,b]]

(具有双括号)是像list.append([a,b])

In [5]:      [ 1, 2, 3,4]  + [[5,6]]
Out[5]: [1, 2, 3, 4, [5, 6]]

0
投票

好吧,虽然我上面的答案是正确的,另外一个不错的(但也许不漂亮)的方式来做到这一点会使用附加的回报无事实:

func(l.append([]) is None and l[-1])

这实际上让你做任何你在.append同一行想要的

© www.soinside.com 2019 - 2024. All rights reserved.