Skip to main content
 首页 » 编程设计

python之将函数应用于多个列表 (Python)

2025年05月04日10lhb25

我想将以下函数应用到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, ')' 

这是一个更长的代码,使用列表的方式有点草率:

xMin = 0 
yMin = 0 
 
def i1(): 
    a,b,c = 2,-3,12 
 
    #Create and append l1 
    global l1 
    l1 = [] 
    l1.extend((a,b,c)) 
 
    #Find X,Y 
    y = (-a*xMin)/b + (c/b) 
    x = (-b*yMin)/a + c/a 
 
    #Add to list 
    pair = [] 
    pair.append((xMin,y)) 
    pair.append((x,yMin)) 
 
    print '%sx + %sy = %s' % (a,b,c) 
    print 'RETURNS' 
    print pair[0], z1 
    print pair[1], z2 
 
def i2(): 
    a,b,c = 1,1,5 
 
    #Create and append l2 
    global l2 
    l2 = [] 
    l2.extend((a,b,c)) 
 
    #Find X,Y 
    y = (-a*xMin)/b + c/b 
    x = (-b*yMin)/a + c/a 
 
    #Add to list 
    pair = [] 
    pair.append((xMin,y)) 
    pair.append((x,yMin)) 
 
    print '%sx + %sy = %s' % (a,b,c) 
    print 'RETURNS' 
    print pair[0], z1 
    print pair[1], z2 

因此,在第二段代码中,我得到了 4 个列表项,每个列表项都应应用于最终方程,z = ax + by,其中 a 和 b 独立于其他函数.

编辑:目的是采用像“z = 2x + 7y”这样的方程式并使其服从规则: 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 的列表可以包含基元、类实例、元组或列表。