在列表中划分2的元素幂并维护列表

时间:2017-01-24 21:52:31

标签: python list functional-programming

我有一个对象列表:

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)]

1 个答案:

答案 0 :(得分:1)

myList1如果你想要一个学习Obj的列表,myList2你需要一个int列表

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]