我遇到了一个小逻辑问题并试图解决它。
我的情况如下:
我有一个项目列表,每个项目代表一个组
我需要创建一组嵌套组
所以,例如:
myGroups = ["head", "neck", "arms", "legs"]
我需要让它们像这样表示: (如果您可以对文件夹结构进行成像)
head
|_> neck
|_> arms
|_>legs
依此类推,直到我点击最后一个元素。
我认为可行的(但不知道如何在这里推进)是:
def createVNTgroups(self, groupsData):
for i in range(len(groupsData)):
print groupsData[i]
for q in range(1, len(groupsData)):
print groupsData[q]
但是在这种情况下,我正在使用相同的元素来运行' i'我已经使用了' q'。
有人会给我一个暗示吗? 提前谢谢!答案 0 :(得分:0)
如果我理解得很好,你需要一个嵌套的结构。对于这种情况,您可以使用递归函数:
myGroups = ["head", "neck", "arms", "legs"]
def createVNTgroups(alist):
temp = alist[:] # needed because lists are mutable
first = [temp.pop(0)] # extract first element from list
if temp: # if the list still contains more items,
second = [createVNTgroups(temp)] # do it recursively
return first + second # returning the second object attached to the first.
else: # Otherwise,
return first # return the last element
print createVNTgroups(myGroups)
这会产生一个嵌套列表:
['head', ['neck', ['arms', ['legs']]]]
答案 1 :(得分:0)
那是你在找什么?
>>> m
['head', 'neck', 'arms', 'legs']
>>> reduce(lambda x,y:[x,y][::-1] if x!=y else [x], m[::-1],m[-1])
['head', ['neck', ['arms', ['legs']]]]