如何在特殊标准下使用指数

时间:2017-09-01 02:25:53

标签: python-3.x

我是python的新手,并且正在尝试找到一种方法来组织一个特定的函数,这样我就可以获取一个列表,对它应用特殊条件,然后返回另一个列表。

我想:

1)如果偶数为正方形的数字 2)如果是奇数则立方数 3)然后将这些结果存储在列表中并返回该列表

这是我的代码:

def square_function(x):
    if i % 2 == 0:
        x = [i ** (2)]
    else:
        y = [i ** (3)]
    func = [x, y]

    return func

我对使用python编程非常陌生,所以你能提供的任何帮助都会非常棒。

4 个答案:

答案 0 :(得分:0)

我认为这可能就是你要找的东西:

from math import sqrt

def square_or_cube_function(x):
    result = []
    for i in x:
        if i % 2 == 0:
            result.append(sqrt(i))
        else:
            result.append(i ** 3)
    return result


print(square_or_cube_function([1, 4, 5, 8]))
print(square_or_cube_function([5, 7, 16, 32]))

<强>输出:

[1, 2.0, 125, 2.8284271247461903]
[125, 343, 4.0, 5.656854249492381]

更短的解决方案可能是:

from math import sqrt

def square_or_cube_function(x):
    return [sqrt(i) if i % 2 == 0 else i **3 for i in x]

print(square_or_cube_function([1, 4, 5, 8]))
print(square_or_cube_function([5, 7, 16, 32]))

相同的输出。

答案 1 :(得分:0)

  

获取一个列表 - 对其应用特殊条件 - 然后返回另一个列表。

您正在寻找map()功能

def foo(x):
    return x**2 if x%2==0 else x**3

l = [1,2,3]
I = list(map(foo, l)) 

答案 2 :(得分:0)

使用列表理解:

>>> a = [1,2,3,4,5]
>>> [x ** 2 if x % 2 == 0 else x ** 3 for x in a]
[1, 4, 27, 16, 125]

答案 3 :(得分:0)

另一种LC解决方案,但使用了一点聪明:

[x ** (x % 2 + 2) for x in L]