Skip to main content
 首页 » 编程设计

python之处理大量 list

2025年05月04日10www_RR

我正在编辑我之前无法正确解释的帖子。我写了这段代码,

param_values = { 
          'aa' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,1.0], [-1,-1]],      
          'ae' : [[-1,-1], [-1,-1], [0.3,0.4], [-1,-1], [0.15,1.0], [-1,-1]],  
          'ah' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,1.0], [-1,-1]],  
          'ao' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.3,1.0], [-1,-1]],  
          'b'  : [[-1,-1], [0.2,1.0], [-1,-1], [-1,-1], [0.15,0.2], [-1,-1]],  
          'ch' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.4], [-1,-1]],  
          'd'  : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.4], [-1,-1]],  
          'dh' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.35], [-1,-1]],  
          'dx' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.35], [-1,-1]],  
          'eh' : [[-1,-1], [-1,-1], [0.1,0.5], [-1,-1], [0.4,0.7], [-1,-1]],  
          'er' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.5], [-1,-1]],  
          'ey' : [[-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [0.3,0.5], [-1,-1]],  
          'f'  : [[0.5,1.0], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1]],  
          'g'  : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.8], [-1,-1]],  
          'hh' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.8], [-1,-1]],  
          'ih' : [[-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [0.05,0.15], [-1,-1]],  
          'iy' : [[-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [0.1,0.15], [-1,-1]],  
          'jh' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.6], [-1,-1]],  
          'k'  : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.8], [-1,-1]],  
          'l'  : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.6], [-1,-1]],  
          'm'  : [[-1,-1], [0.2,1.0], [-1,-1], [-1,-1], [0.15,0.2], [-1,-1]],  
          'n'  : [[-1,-1], [-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [-1,-1]],  
          'ng' : [[-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [0.09,0.3], [-1,-1]],  
          'p'  : [[-1,-1], [0.2,1.0], [-1,-1], [-1,-1], [0.15,0.2], [-1,-1]],  
          'r'  : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.6], [-1,-1]],  
          's'  : [[-1,-1], [-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [-1,-1]], 
          'sh' : [[-1,-1], [-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [-1,-1]],  
          't'  : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.4], [-1,-1]],  
          'th' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.2], [-1,-1]],  
          'uh' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.5,1.0]],  
          'uw' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.5,1.0]],  
          'v'  : [[0.5,1.0], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1]],  
          'w'  : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.2,1.0]],  
          'y'  : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.4], [-1,-1]],   
          'z'  : [[-1,-1], [-1,-1], [-1,-1], [0.3,1.0], [-1,-1], [-1,-1]],  
          'zh' : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.15,0.6], [-1,-1]]  
          'o'  : [[-1,-1], [-1,-1], [-1,-1], [-1,-1], [-1,-1], [0.4,1.0]] 
         } 
 
def coart(phonemeFile) : 
    """ Coarticulation function where forward and backward coarticulation take place a  and parameter values are generated""" 
    with open("syllabifiedPhonemes.txt", "r") as pFile : 
        for line in tFile : 
            line = line.split() 
            if line == " ' " : 
                continue 

param_values 是音素列表,其中包含每个音素的对应列表。每个音素的列表与我从 Maya 获得的混合形状 slider 值相关。我在 Maya 中有 6 个混合形状,分别是 lower_lip_under_upper_teeth、lips_touch、lips_spread、teeth touch、jaw_open 和 lips_round。因此,这些值是每个 slider 值的音素范围。

[-1,-1] 表示未使用特定的混合形状。其他值是形状可以移动的范围。

列表显示,主要是它只是一个唇形,对一个音素有效,其余为 [-1,-1]。但对于某些音素,有 2 或 3 个唇形同时活跃。我在 Maya 中手动制作了它们的动画。嘴唇形状的值从 0 到 1 不等。

输入文件syllabifiedPhonemes.txt的内容是,

sh iy ' hh eh ' t er ' t aa r k ' s uw t n ' k r iy s ' hh iy ' w aa ' sh w aa dx ' er ' l ih ' y er 

程序应遍历文件中的所有这些音素,并引用上面的列表设置其相应唇形的值。应该存储这些值,以便可以进行进一步的工作。单引号表示音节边界。首先,程序应该通过忽略音节边界的音素,并为所有形状保存它们的唇形值。然后在下一阶段,它应该开始查看每个边界内部。

到目前为止,我只有这个,但我对如何进一步进行一无所知。我想我已经正确解释了我的查询。谢谢。

这些值是形状列表中存在的形状的值。谁能帮忙。谢谢。

请您参考如下方法:

假设您已经知道哪些音素与哪些唇形相关,听起来您只需要构建一个字典。这只是一个示例,就您的问题域而言可能是无稽之谈:

lip_shapes = { 
    'aa': ['neutral', 'lower lip under upper teeth'], 
    'ae': ['lips touch', 'lip spread'], 
    # etc... 
} 

所以你可以像这样找到音素的嘴唇形状:lip_shapes['aa']

接下来你要做的是用常量而不是字符串来表示嘴唇的形状:

NEUTRAL = 0 
LOWER_LIP_UNDER_UPPER_TEETH = 1 
LIPS_TOUCH = 2 
LIP_SPREAD = 3 
 
lip_shapes = { 
    'aa': [NEUTRAL, LOWER_LIP_UNDER_UPPER_TEETH], 
    # etc... 
} 

为唇形使用常量名称,而不是长字符串,将使您的编程更不容易出现拼写错误。 (您将导致 NameError 而不是具有细微不同的字符串。)

对你有帮助吗?你能看到如何将你的数据变成这种形式吗?