Python:在第一个元素之后检查每个项目或子列表的列表长度和运行方法

时间:2015-03-21 20:53:09

标签: python python-2.7

我想在python 2.7中执行类似下面的操作

示例1:

mylist  = ['or', 'A', 'B', 'C']

tree1 = my_method(mylist[1])   #A
tree2 = my_method(mylist[2])   #B 
tree3 = my_method(mylist[3])   #C

return ['or', tree1, tree2, tree3]

问题是列表中可以有任意数量的元素,我想为每个元素计算树 X ,然后返回尽可能多的树 X 我们计算了。在上面的例子中有3棵树,所以有3棵树作为回报。

示例2:

mylist  = ['or', ['and','A','B','C'], 'B']

tree1 = my_method(mylist[1])   #['and','A','B','C']
tree2 = my_method(mylist[2])   #B

return ['or', tree1, tree2]

在上面的例子中有2棵树,因为有2个子元素,所以有2棵树作为回报。

如何在python中完成? 谢谢!

2 个答案:

答案 0 :(得分:1)

在这种情况下,您可以使用列表推导将方法应用于列表的项目:

def process_list(mylist):
    return mylist[:1] + [my_method(item) for item in mylist[1:]]

mylist  = ['or', ['and','A','B','C'], 'B']
print(process_list(mylist))

答案 1 :(得分:0)

很抱歉,如果我无法清楚地解释要求。我用循环找出了下面的解决方案。棘手的是我不知道我们可以在python中使用+添加2个列表。我刚开始学习python。

            length = len(prop)
            i = 1
            tmp = []
            op = 'or'
            while i < length:
                tree = implies(prop[i]) 
                tmp.append(tree)
                i = i + 1

            answer = [op] + tmp [:]
            return answer