我想将以下函数应用于a
、b
、c
的多个实例,但似乎我不能将此函数应用于列表。我们的目标是计算一些不等式,最后将它们插入一个新的z = ax + bx
方程中,以找到最低或最高的序对。在
这是一个更简洁的代码,它省略了列表的使用:
xMin,yMin = 0,0
a,b,c = 2,-3,12
enter code here
def FindVar(object):
x = (-b*yMin)/a + c/a
y = (-a*xMin)/b + c/b
print '(', FindVar.x, ',', yMin, ')'
print '(', xMin, ',', FindVar.y, ')'
这是一个较长的代码,它使用列表时比较草率:
^{pr2}$所以在第二段代码中,我得到了4个列表项,每一个都应该应用于一个最终的等式,z = ax + by
,其中a和b独立于其他函数。在
它的目的是为了“编辑”这个等式 2x-3y≤12, x+y≤5, 3x+4y≥24, x≥0, y≥0。在
我把这些方程放入一个列表中,这样a,b,c=[2,-3,12],[1,1,5],[3,4,24](其中a=2,1,3,b=-3,1,4,c=12,5,24)。然后我可以根据这三个实例中的每一个找到(x,y),并将这些有序对插入到我的初始“z=2x+7y”中。所有这一切的关键是获取数据集,并找出哪一组最有效。在
z1和z2在先前版本的代码中被用于将“z=2x+7y”应用于第一个方程的第一个和第二个有序对。在
编辑2: 这是我想出的更简洁的代码。在
xMin = 0
yMin = 0
a = [10,11,1]
b = [7,-8,1]
c = [200,63,42]
def findxy(a,b,c):
#Finds x,y for ax+by=c
x = (-b*yMin)/a + c/a
y = (-a*xMin)/b + c/b
#The results, followed by the z function "z = 15x + 15y"
if x >= xMin:
print '(%s, %s)' % (x,yMin), 15 * x + 15 * yMin
if y >= yMin:
print '(%s, %s)' % (xMin,y), 15 * xMin + 15 * y
map(findxy,a,b,c)
结果
(20, 0) 300 (0, 28) 420 (5, 0) 75 (42, 0) 630 (0, 42) 630
谢谢!在
要将函数应用于列表中的每个对象,可以使用内置函数map。 传递给
map
的列表可以由原语、类实例、元组或列表组成。在相关问题 更多 >
编程相关推荐