-1

一个简单的问题:

如何在 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|'

有什么建议么?

提前致谢

4

3 回答 3

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'
于 2013-07-28T20:26:37.770 回答
2

像这样的东西?

#! /usr/bin/python3

a = [c for c in 'ABCD']
result = ' | '.join ('>'.join (a [:x + 1] ) for x in range (len (a) ) )
print (result)
于 2013-07-28T20:09:54.397 回答
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'
于 2013-07-28T20:12:31.803 回答