2015-03-21 2 views
-2

Я хочу сделать что-то, как показано ниже в питоне 2,7Python: проверить длину списка и метод выполнения для каждого элемента или подсписка после первого элемента

Пример 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? Спасибо!

+0

downvoters, пожалуйста, добавьте комментарии, чтобы оп сообщению лучший вопрос. –

ответ

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)) 
+0

Понимание списка действительно помогает уменьшить количество кода и сделать мою программу более чистой. Большое спасибо ! –

0

Извините, если я не могу четко объяснить требование. Я понял решение ниже, используя цикл. Трудность в том, что я не знал, что мы можем добавить 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 
Смежные вопросы