一个简单的问题:
如何在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|'
有什么建议吗?
先谢谢
答案 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'