我是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编程非常陌生,所以你能提供的任何帮助都会非常棒。
答案 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]