如何获取输入列表的输出,作为使用公式的列表
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
列表中的每个元素,对其应用公式,然后将结果追加到列表中。
此外,最好提供有意义的变量名(a
和 res
没有意义)。
应用以上内容,你会得到:
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))
来自
我需要使用以下公式为输入列表打印解决方案列表, 这是代码:
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
列表中的每个元素,对其应用公式,然后将结果追加到列表中。
此外,最好提供有意义的变量名(a
和 res
没有意义)。
应用以上内容,你会得到:
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))
来自