如何使用python只打印一次输出?

时间:2015-04-28 14:57:44

标签: python

列表中元组的大小为39。

这是我的代码:

def joinphrase(joinph,i):
    length = len(joinph)
    res = ['%s %s' % (joinph[i][0], joinph[i + 1][0])
    for i in range(length)
       if i < length - 1 and joinph[i][2] == 'B-NP' and joinph[i + 1][2] == 'I-NP']
           return res 

def sentjoinphrase(joinph):
    return [joinphrase(joinph, i) for i in range(len(joinph))]


example = test_sents[0]
print (sentjoinphrase(example))

我希望使用条件连接来自不同元组的两个字符串并打印连接输出。但是输出根据列表中元组的大小打印了39次。

如何只打印一次输出?

1 个答案:

答案 0 :(得分:1)

您还有许多其他问题,但对于您的print语句,您似乎正在使用

创建列表
CreateThread

这是您的初始短语def sentjoinphrase(joinph): return [joinphrase(joinph, i) for i in range(len(joinph))] 的长度然后在您的连接短语函数中,用

覆盖参数i的值
(for i in range(len(joinph))

因为这是一个列表推导,它只查看内部i变量,而不是传递的参数。 这看起来只是调用joinphrase短语长度的次数,在本例中为39,因为传递的参数是不必要的。 因此,如果您只是从joinphrase(只是多次)获得正确的值,为什么不像这样删除参数for i in range(length) # Where length is equal to the length of joinph

i

然后您不再需要拨打def joinphrase(phrase): phrase_len = len(phrase) return ['%s %s' % (phrase[i][0], joinph[i + 1][0]) for i in range(phrase_len) if i < phrase_len - 1 and phrase[i][2] == 'B-NP' and phrase[i + 1][2] == 'I-NP'] 因为参数是多余的,您可以直接致电sentjoinphrase