2017-01-24 2 views
1

У меня есть список объектов:Разделить элементы мощности 2 в списке и сохранить лист

class learn: 
    def __init__(self, data): 
     self._data = data 

myList = [] 
obj1 = learn(6) 
obj2 = learn(8) 
obj3 = learn(14) 
obj4 = learn(16) 
obj5 = learn(21) 

myList.append(obj1) 
myList.append(obj2) 
myList.append(obj3) 
myList.append(obj4) 
myList.append(obj5) 

Теперь я хотел бы сохранить элементы внутри моего списка (не потерять их) и разделить власть 2-х элементов на 2.

Я не мог достигнуть этого без петель, посмотрел в фильтр, но я продолжал терять элементы.

Ожидаемый выход нового list из объектов узнать [obj(4), obj(8), obj(6), obj(14), obj(21)]

+0

ожидается выход? ваше описание не очень понятно – depperm

+0

Добро пожаловать в StackOverflow. Прочтите и следуйте инструкциям по отправке в справочной документации. [Минимальный, полный, проверяемый пример] (http://stackoverflow.com/help/mcve) применим здесь. Мы не можем эффективно помочь вам, пока вы не разместите свой код MCVE и не сможете точно описать проблему. В частности, разместите свою лучшую попытку, полученный результат и ожидаемый результат. – Prune

+0

* Ожидаемый выход 4 8 6 14 21 * - мощность 2 для значения '6' равна' 4' ??? – RomanPerekhrest

ответ

1

myList1 упаковывают вы хотите получить список узнать Obj, и myList2 упаковывают вы хотите получить список Интс

def is_power2(num): 
    return num != 0 and ((num & (num - 1)) == 0) 

List1 = list(filter(lambda x: is_power2(x._data), myList)) 
List2 = list(filter(lambda x: not is_power2(x._data), myList)) 
List1 = [learn(o._data/2) for o in List1] 
myList1 = List1 + List2 
myList2 = [o._data for o in List1] 
Смежные вопросы