Python(带附加的重复值)
Python (repeated values with append)
我有以下公式
Q = [(2 * C * D)/H] 的平方根
我想输入 100,150,180 所以我想要的输出是 18,22,24
所以我的代码是
import math
c=50
h=30
value=[]
def equation(a1,b1,c1):
for i in (a1,b1,c1):
value.append(int(math.sqrt(2*c*a1/h)))
value.append(int(math.sqrt(2*c*b1/h)))
value.append(int(math.sqrt(2*c*c1/h)))
print (value)
当我输入等式(100,150,180)时,为什么输出如下?
[18, 12, 24]
[18, 12, 24, 18, 12, 24]
[18, 12, 24, 18, 12, 24, 18, 12, 24]
如何更改代码以便我只获得
[18, 12, 24]
为什么要使用 for
循环?
import math
c=50
h=30
def equation(a1,b1,c1):
value=[]
value.append(int(math.sqrt(2*c*a1/h)))
value.append(int(math.sqrt(2*c*b1/h)))
value.append(int(math.sqrt(2*c*c1/h)))
print (value)
for 循环在这里似乎有点不必要。如果你只是想让函数得到return三个数字的列表,你可以使用:
import math
c = 50
h = 30
def equation(a1, b1, c1):
value = []
value.append(int(math.sqrt(2 * c * a1 / h)))
value.append(int(math.sqrt(2 * c * b1 / h)))
value.append(int(math.sqrt(2 * c * c1 / h)))
print(value)
equation(100, 150, 180)
不需要 for
循环。
import math
c=50
h=30
value=[]
def equation(a1,b1,c1):
value.append(int(math.sqrt(2*c*a1/h)))
value.append(int(math.sqrt(2*c*b1/h)))
value.append(int(math.sqrt(2*c*c1/h)))
print (value)
仅在值上循环以应用相同的公式,在列表理解中,也不打印结果,仅 return 它(如果需要,在调用者中打印):
import math
c=50
h=30
def equation(a1,b1,c1):
return [int(math.sqrt(2*c*x/h)) for x in (a1,b1,c1)]
print(equation(100,150,180))
结果:
[18, 22, 24]
(这样可以避免这种 loop/where do I define my return value errors and a lot of copy/paste)
具有可变参数的变体(相同的调用语法,保存参数打包和解包,因为所有参数都得到相同的处理):
def equation(*args):
return [int(math.sqrt(2*c*x/h)) for x in args]
在我看来,这就是您所追求的:
import math
c = 50
h = 30
def equation(values):
return [int(math.sqrt(2*c*i/h)) for i in values]
input = [100, 150, 180]
print(equation(input))
输出:
[18, 22, 24]
我有以下公式 Q = [(2 * C * D)/H] 的平方根 我想输入 100,150,180 所以我想要的输出是 18,22,24
所以我的代码是
import math
c=50
h=30
value=[]
def equation(a1,b1,c1):
for i in (a1,b1,c1):
value.append(int(math.sqrt(2*c*a1/h)))
value.append(int(math.sqrt(2*c*b1/h)))
value.append(int(math.sqrt(2*c*c1/h)))
print (value)
当我输入等式(100,150,180)时,为什么输出如下?
[18, 12, 24]
[18, 12, 24, 18, 12, 24]
[18, 12, 24, 18, 12, 24, 18, 12, 24]
如何更改代码以便我只获得
[18, 12, 24]
为什么要使用 for
循环?
import math
c=50
h=30
def equation(a1,b1,c1):
value=[]
value.append(int(math.sqrt(2*c*a1/h)))
value.append(int(math.sqrt(2*c*b1/h)))
value.append(int(math.sqrt(2*c*c1/h)))
print (value)
for 循环在这里似乎有点不必要。如果你只是想让函数得到return三个数字的列表,你可以使用:
import math
c = 50
h = 30
def equation(a1, b1, c1):
value = []
value.append(int(math.sqrt(2 * c * a1 / h)))
value.append(int(math.sqrt(2 * c * b1 / h)))
value.append(int(math.sqrt(2 * c * c1 / h)))
print(value)
equation(100, 150, 180)
不需要 for
循环。
import math
c=50
h=30
value=[]
def equation(a1,b1,c1):
value.append(int(math.sqrt(2*c*a1/h)))
value.append(int(math.sqrt(2*c*b1/h)))
value.append(int(math.sqrt(2*c*c1/h)))
print (value)
仅在值上循环以应用相同的公式,在列表理解中,也不打印结果,仅 return 它(如果需要,在调用者中打印):
import math
c=50
h=30
def equation(a1,b1,c1):
return [int(math.sqrt(2*c*x/h)) for x in (a1,b1,c1)]
print(equation(100,150,180))
结果:
[18, 22, 24]
(这样可以避免这种 loop/where do I define my return value errors and a lot of copy/paste)
具有可变参数的变体(相同的调用语法,保存参数打包和解包,因为所有参数都得到相同的处理):
def equation(*args):
return [int(math.sqrt(2*c*x/h)) for x in args]
在我看来,这就是您所追求的:
import math
c = 50
h = 30
def equation(values):
return [int(math.sqrt(2*c*i/h)) for i in values]
input = [100, 150, 180]
print(equation(input))
输出:
[18, 22, 24]