将列表的内容传递给不同的函数

时间:2011-11-19 16:40:41

标签: python

我有一个如下列表,

plist = [[('s', [0.0, 0.1, 0.0, 0.4, 0.0]),
          ('aa', [0.0, 0.1, 0.0, 0.5, 0.0])],
        [('m', [0.0, 0.0, 0.1, 0.3, 0.0]),
         ('ih', [0.0, 0.1, 0.1, 0.2, 0.0])],
         [('k', [0.0, 0.1, 0.0, 0.1, 0.0]),
          ('l', [0.0, 0.1, 0.0, 0.6, 0.0]),
          ('eh', [0.0, 0.1, 0.0, 0.0, 0.0]),
          ('k', [0.0, 0.1, 0.0, 0.0, 0.0])],
         [('t', [0.0, 0.1, 0.0, 0.1, 0.0]),
          ('aa', [0.0, 0.1, 0.0, 0.0, 0.0])],
         [('n', [0.0, 0.1, 0.1, 0.2, 0.0]),
          ('ih', [0.0, 0.1, 0.1, 0.0, 0.0]),
          ('t', [0.0, 0.1, 0.0, 0.0, 0.0])],
         [('g', [0.0, 0.1, 0.0, 0.4, 0.0]),
          ('eh', [0.0, 0.1, 0.0, 0.0, 0.0]),
          ('l', [0.0, 0.1, 0.0, 0.5, 0.0])],
         [('v', [0.3, 0.0, 0.1, 0.1, 0.0]),
          ('ae', [0.0, 0.1, 0.1, 0.0, 0.0])],
         [('n', [0.0, 0.1, 0.1, 0.2, 0.0]),
          ('ih', [0.0, 0.1, 0.1, 0.0, 0.0])],
         [('k', [0.0, 0.1, 0.0, 0.0, 0.0]),
          ('aa', [0.0, 0.1, 0.0, 0.0, 0.0])],
         [('p', [0.0, 0.0, 0.3, 0.0, 0.0]),
          ('l', [0.0, 0.1, 0.2, 0.0, 0.0])],
         [('k', [0.0, 0.1, 0.1, 0.0, 0.0])]]

此列表是从函数生成的。我需要将列表中的值传递给不同的函数。由于每个内部列表中有5个值,因此我有5个函数。现在我必须使用这些函数中的值,如下所示,

def lips_part_bezier(u_value) :
    """ Calculating sampling points using rational bezier curve equation"""
    p0 = 0.0 (1st value of 's')
    p3 = 0.0 (1st value of 'aa')
    p1 = p0
    p2 = p3     
    u = u_value

    p_u = math.pow(1 - u, 3) * 0.7 + 3 * u * math.pow(1 - u, 2) * 0.23 \
        + 3 * (1 - u) * math.pow(u, 2) * 0.1 + math.pow(u, 3) * 0.52

    p_u = p_u * w

    d = math.pow(1 - u, 3) * w + 3 * u * w * math.pow(1 - u, 2) + 3 * (1 - u) * w * math.pow(u, 2) + math.pow(u, 3) * w

    p_u = p_u / d

    #print "p(u) = ", p_u
    return p_u

u_value从另一个函数传递。还有其他功能具有相同的操作。第二个函数采用's'和'aa'的第二个值,依此类推。这是第一次迭代。在下一次迭代中,所有函数中的p0是前一个p1,p1将是列表中的下一个值。这将继续,直到列表中没有剩余值。此外,列表在另一个函数中生成。作为初学者,对我来说这看起来有点复杂。谢谢。

1 个答案:

答案 0 :(得分:1)

我建议您修改生成plist的函数,以便它返回一个字符串值作为键,列表作为值的dict,或者如果您没有修改的机会则写一个新函数。这样,除了u_value之外,您可以按照您想要的顺序将dict和迭代号作为参数传递给所有函数,并引用它们,例如: p0 = coefs['s'][iter_num]