gpt4 book ai didi

python - 加入不超过最大字符限制的句子列表

转载 作者:行者123 更新时间:2023-12-02 16:56:02 25 4
gpt4 key购买 nike

我有一个列表,其中每个项目都是一个句子。只要新组合的项目不超过字符限制,我就想加入这些项目。

您可以很容易地加入列表中的项目。

x = ['Alice went to the market.', 'She bought an apple.', 'And she then went to the park.']
' '.join(x)
>>> 'Alice went to the market. She bought an apple. And she then went to the park.'

现在假设我想按顺序加入这些项目,只要新组合的项目不超过 50 个字符

结果是:

['爱丽丝去了市场。她买了一个苹果。','然后她去了公园。']

你也许可以像 here 这样的列表理解.或者我可以做一个条件迭代器,比如 here .但是我遇到了句子被截断的问题。

说明

  • 最大字符数限制是指列表中单个项目的长度……而不是整个列表的长度。合并列表项时,新列表中的任何一项都不能超过限制。
  • 无法组合的项目在列表中返回,因为它们没有改变。
  • 在不超过限制的情况下将句子组合在一起。如果它们超过限制,请不要合并并保持原样。仅组合列表中顺序相邻的句子。
  • 请确保您的解决方案满足上述输出结果:['爱丽丝去了市场。她买了一个苹果。','然后她去了公园。']

最佳答案

列表理解可能会不太清晰,因为你想继续检查总长度。

一个简单的函数就可以了。这一个接受空的 joined_str 或未指定的作为默认值,但也可以从一些指定的初始 str 开始。

def join_50_chars_or_less(lst, limit=50):
"""
Takes in lst of strings and returns join of strings
up to `limit` number of chars (no substrings)

:param lst: (list)
list of strings to join
:param limit: (int)
optional limit on number of chars, default 50
:return: (list)
string elements joined up until length of 50 chars.
No partial-strings of elements allowed.
"""
for i in range(len(lst)):
new_join = lst[:i+1]
if len(' '.join(new_join)) > limit:
return lst[:i]
return lst

定义函数后:

>>> x = ['Alice went to the market.', 'She bought an apple.', 'And she then went to the park.']
>>> join_50_chars_or_less(x)
['Alice went to the market.', 'She bought an apple.']
>>> len('Alice went to the market. She bought an apple.')
47

让我们测试一个可能更长的字符串:

>>> test_str = "Alice went to the market. She bought an apple on Saturday."
>>> len(test_str)
58

>>> test = test_str.split()
>>> test
['Alice', 'went', 'to', 'the', 'market.', 'She', 'bought', 'an', 'apple', 'on', 'Saturday.']

>>> join_50_chars_or_less(test)
['Alice', 'went', 'to', 'the', 'market.', 'She', 'bought', 'an', 'apple', 'on']
>>> len(' '.join(join_50_chars_or_less(test)))
>>> 48

关于python - 加入不超过最大字符限制的句子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56401904/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com