我有一个对象列表:
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 :(得分: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]