天天看点

python判断正数负数,python正数和负数列表的可能性

python判断正数负数,python正数和负数列表的可能性

I'm trying to make a function in Python that takes a list of integers as input and returns a greater list containing all positive and negative possibilities of those numbers.

Pretend '+' is a positive number and '-' is a negative number

The output should match up with:

foo([-4])

>>> [ [4], [-4] ]

foo([+, +])

>>> [ [+,+], [+,-], [-,+], [-,-] ]

foo([-, +])

>>> [ [+,+], [+,-], [-,+], [-,-] ]

foo([-1, 3])

>>> [ [1,3], [1,-3], [-1,3], [-1,-3] ]

foo( [+,-,+] )

>>> [ [-,-,-],[+,-,-],[-,+,-],[-,-,+],[+,+,-],[+,-,+],[-,+,+],[+,+,+] ]

解决方案

For just numbers, you can use itertools.product to create all combos, after generating a list with both positive and negative numbers:

from itertools import product

def foo(nums):

return list(product(*((x, -x) for x in nums)))

Demo:

>>> foo([-4])

[(4,), (-4,)]

>>> foo([-1, 3])

[(1, 3), (1, -3), (-1, 3), (-1, -3)]

>>> foo([1, 3])

[(1, 3), (1, -3), (-1, 3), (-1, -3)]

>>> foo([1, -3, 4])

[(1, 3, 4), (1, 3, -4), (1, -3, 4), (1, -3, -4), (-1, 3, 4), (-1, 3, -4), (-1, -3, 4), (-1, -3, -4)]