一个关于python列表的问题

一个列表[1,2,3,4,5,6,7,8,9],取出两个数,积为24,符合条件删除这两个数,从剩下的值里再取出两个数,和为10,符合条件删除这两个数,再取出两个数,商为3... 一个列表[1,2,3,4,5,6,7,8,9],取出两个数,积为24,符合条件删除这两个数,从剩下的值里再取出两个数,和为10,符合条件删除这两个数,再取出两个数,商为3,符合条件删除这两个数,再取出两个数,差为1,符合条件删除这两个数,求最后剩余的那个数,用python如何实现以上功能,望各位大神指点,谢谢。 展开
 我来答
waketzheng
2018-02-28 · TA获得超过644个赞
知道小有建树答主
回答量:566
采纳率:63%
帮助的人:155万
展开全部
#!/usr/bin/env python
# coding=utf-8
'''
一个列表[1,2,3,4,5,6,7,8,9],取出两个数,积为24,符合条件删除这两个数,
从剩下的值里再取出两个数,和为10,符合条件删除这两个数,再取出两个数,
商为3,符合条件删除这两个数,再取出两个数,差为1,符合条件删除这两个数,
求最后剩余的那个数
'''
A = list(range(1, 10))

def op(alist, func, result):
    for i in alist:
        sublist = [n for n in alist if n != i]
        for j in sublist:
            if func(i, j) == result:
                return [n for n in sublist if n != j]
    raise Exception('Numbers not found! Function or Result Error')

def main():
    a = op(A, lambda x, y: x*y, 24)
    b = op(a, lambda x, y: x+y, 10)
    c = op(b, lambda x, y: x/y, 3)
    d = op(c, lambda x, y: x-y, 1)
    print('The remaining number is:', d[0])

if __name__ == '__main__':
    main()

or

#!/usr/bin/env python3  # python 3.6+
'''
一个列表[1,2,3,4,5,6,7,8,9],取出两个数,积为24,符合条件删除这两个数,
从剩下的值里再取出两个数,和为10,符合条件删除这两个数,再取出两个数,
商为3,符合条件删除这两个数,再取出两个数,差为1,符合条件删除这两个数,
求最后剩余的那个数
'''
A = list(range(1, 10))

def truncate(alist, op, result):
    for i in alist:
        sublist = [n for n in alist if n != i]
        for j in sublist:
            if eval(f'{i}{op}{j}') == result:
                return [n for n in sublist if n != j]
    raise Exception('Numbers not found! Function or Result Error')

def main():
    a = truncate(A, '*', 24)
    b = truncate(a, '+', 10)
    c = truncate(b, '/', 3)
    d = truncate(c, '-', 1)
    print('The remaining number is:', d[0])

if __name__ == '__main__':
    main()

or

#!/usr/bin/env python3  # python 3.6+
'''
一个列表[1,2,3,4,5,6,7,8,9],取出两个数,积为24,符合条件删除这两个数,
从剩下的值里再取出两个数,和为10,符合条件删除这两个数,再取出两个数,
商为3,符合条件删除这两个数,再取出两个数,差为1,符合条件删除这两个数,
求最后剩余的那个数
'''
A = list(range(1, 10))

class MyList(list):
    def tc(self, op, result):
        """if the `op` of two numbers in this list is equal to `result`
        delete them and return the sub list
        """
        for i in self:
            sublist = [n for n in self if n != i]
            for j in sublist:
                if eval(f'{i}{op}{j}') == result:
                    return self.__class__([n for n in sublist if n != j])
        raise Exception('Numbers not found! Function or Result Error')

def main():
    d = MyList(A).tc('*', 24).tc('+', 10).tc('/', 3).tc('-', 1)
    print('The remaining number is:', d[0])

if __name__ == '__main__':
    main()
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式