一个关于python列表的问题

一个列表[1,2,3,4,5,6,7,8,9],取出两个数,积为24,符合条件删除这两个数,从剩下的值里再取出两个数,和为10,符合条件删除这两个数,再取出两个数,商为3,符合条件删除这两个数,再取出两个数,差为1,符合条件删除这两个数,求最后剩余的那个数,用python如何实现以上功能,望各位大神指点,谢谢。

#!/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()

温馨提示:答案为网友推荐,仅供参考
相似回答