【发布时间】:2011-12-24 19:01:53
【问题描述】:
我有一个 python 方法,它采用 (string, float) 形式的元组列表和 返回一个字符串列表,如果组合在一起,则不会超过某个限制。我不是为了保留输出长度而拆分句子,而是确保保持在所需输出长度的句子长度内。
例如:
s:[('Where are you',1),('What about the next day',2),('When is the next event',3)]
最大长度:5
输出:'Where are you What about the next day'
最大长度:3
输出:'Where are you'
这就是我正在做的:
l=0
output = []
for s in s_tuples:
if l <= max_length:
output.append(s[0])
l+=len(get_words_from(s[0]))
return ''.join(output)
除了在达到长度时停止之外,有没有更聪明的方法来确保输出字长不超过 max_length?
【问题讨论】:
-
我不明白 max_length 5 的输出。长度为 5 的“下一个事件何时是”不是吗?编辑:好的,我知道了。
-
@atlantis:您的变量名“max_length”和您的“不会超过某个限制”和您的“确保输出字长不超过 max_length”与您在 cmets 中所说的相矛盾。请编辑您的问题,使其与您真正想做的一致。
-
那么,您是否正在寻找至少包含给定字数的最短字符串集?这就是您的示例似乎正在做的事情。另外,对中的数字有什么意义?我们必须先选择第一个字符串吗?
-
@10100: "好像是" != "是"