如何获取输入列表的输出,作为使用公式的列表

how to get the output of input list, as a list using a formula

我需要使用以下公式为输入列表打印解决方案列表, 这是代码:

sub=[1,2,3,4,5,6,7]
a=[]



for i in sub:
     def res(i):(sub/12)*100 #this is the formula
     a.append(res(i))
print(a)

公式:

(sub/12)*100

我收到这个错误:

Traceback (most recent call last):
  File "c:\Users\suh\Desktop\se proj 2\backend.py", line 62, in <module>
    a.append(res(i))
  File "c:\Users\suh\Desktop\se proj 2\backend.py", line 61, in res
    def res(i):(sub/12)*100
TypeError: unsupported operand type(s) for /: 'list' and 'int'

这里发生了几件事:

首先,不要在循环内定义函数。您想要单独定义实现公式逻辑的函数,并在循环内调用它。 您还需要在函数中使用 return,以便将计算值发送回调用 formula 函数的任何人。

其次,您想要遍历 sub 列表中的每个元素,对其应用公式,然后将结果追加到列表中。

此外,最好提供有意义的变量名(ares 没有意义)。

应用以上内容,你会得到:

def formula(num):
    return (num / 12) * 100  # this is the formula


sub = [1,2,3,4,5,6,7]
sub_after_formula = []
for num in sub:
     sub_after_formula.append(formula(num))
print(sub_after_formula)

输出:

[8.333333333333332, 16.666666666666664, 25.0, 33.33333333333333, 41.66666666666667, 50.0, 58.333333333333336]

如@JonSG 所述,在这种情况下,建议使用列表理解而不是 for 循环:

sub_after_formula = [formula(x) for x in sub]
sub=[1,2,3,4,5,6,7]    
a=[]    

for i in sub:    
     res = (i/12)*100 #this is the formula    
     a.append(res)    
print(a)    

您不应该在 for 循环中创建函数。在这个例子中,我不需要任何功能。 您实际上收到错误是因为您的公式是 (sub/12)*100 而 sub 是一个列表。我是那里的项目没有子你的公式应该是 (i/12)*100 你不能将列表除以 12.,而是一个整数,这里是 i

对于这个小列表,列表理解/映射方法很棒。

对于更大的列表,或者如果您计划对列表进行更多的数学运算,可能值得查看 numpy 库。这通常会导致速度显着提高,并且可以简化代码。

将列表转换为 numpy 数组后,您可以执行矢量化操作:

sub = [1,2,3,4,5,6,7]
sub_array = np.array(sub)
result = (sub_array/12) * 100
print(result)

或者我们可以使用一个函数,直接传递数组:

def formula(num):
    return (num / 12) * 100

sub_array = np.array(sub)
result = formula(sub_array)
print(result)

为了稍微提高速度,您可以使用 formula(np.fromiter(sub,dtype=np.int32)) 来自