python中的递归列表

时间:2013-07-28 20:06:36

标签: python list recursion

一个简单的问题:

如何在python中创建一个递归列表:

这是输入:A,B,C,D

所需的输出:

              A | A>B | A>B>C | A>B>C>D

我试过这段代码:

line = "A, B , C , D"
line = line.split(',')

for i in range(len(line)):
    for j in range(i,len(line)):
             c=q+line[j]
             q=c+'>'
    c=c+'|'

但我带了这样的清单:

'A > B > C > D > B > C > D > C > D|'

有什么建议吗?

先谢谢

3 个答案:

答案 0 :(得分:3)

这里的发电机可以为您提供所需的输出。性能方面它比双连接快,它是O(N)而不是O(N ^ 2)

>>> def getstr(s):
...     a = [x for x in s]
...     res = None
...     for x in a:
...         if not res: res = x
...         else: res = " > ".join([res, x])
...         yield res
>>>
>>> print " | ".join(getstr("ABCD"))
'A | A > B | A > B > C | A > B > C > D'

答案 1 :(得分:2)

这样的东西?

#! /usr/bin/python3

a = [c for c in 'ABCD']
result = ' | '.join ('>'.join (a [:x + 1] ) for x in range (len (a) ) )
print (result)

答案 2 :(得分:1)

>>> s = 'A , B , C , D'
>>> L = map(str.strip, s.split(','))
>>> L
['A', 'B', 'C', 'D']
>>> ' | '.join('>'.join(L[:i]) for i in range(1,len(L)+1))
'A | A>B | A>B>C | A>B>C>D'