使用列表 - Python

时间:2013-09-10 21:28:34

标签: python list

我遇到了一个小逻辑问题并试图解决它。

我的情况如下:

我有一个项目列表,每个项目代表一个组

我需要创建一组嵌套组

所以,例如:

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'。

有人会给我一个暗示吗?

提前谢谢!

2 个答案:

答案 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']]]]