【问题标题】:Divide elements power of 2 in list and maintain list在列表中除以元素 2 的幂并维护列表
【发布时间】:2017-06-09 22:15:46
【问题描述】:

我有一个对象列表:

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

【问题讨论】:

  • 预期输出?你的描述不是很清楚
  • 欢迎来到 StackOverflow。请阅读并遵循帮助文档中的发布指南。 Minimal, complete, verifiable example 适用于此。在您发布 MCVE 代码并准确描述问题之前,我们无法有效地帮助您。具体来说,发布您的最佳尝试、您获得的输出以及您期望的输出。
  • 预期输出是 4 8 6 14 21 - 值 6 的 2 的幂是 4 ???
  • 请澄清:您说您想将某些元素除以 2,但随后您显示的结果是整数列表,而不是 learn 对象列表.
  • @RomanPerekhrest 我不在乎输出列表的组织方式...... 4 和 8 代表他附加的 16 和 8。这是我的猜测。

标签: python list functional-programming


【解决方案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]

【讨论】:

    猜你喜欢
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2018-09-30
    • 1970-01-01
    • 2016-07-13
    • 1970-01-01
    • 2014-02-26
    • 2023-03-24
    相关资源
    最近更新 更多