gpt4 book ai didi

python - 椭圆化列表连接,Pythonically

转载 作者:行者123 更新时间:2023-11-28 17:41:07 24 4
gpt4 key购买 nike

几天前我学习了列表理解,现在我觉得我对它们有点疯狂,试图让它们解决所有的问题。也许我还没有真正理解它们,或者我对 Python 的了解还不够多,无法使它们既强大又简单。这个问题已经困扰我一段时间了,非常感谢任何意见。

问题

在 Python 中,加入一个字符串列表 words成一个字符串 excerpt满足这些条件:

  • 单个空格分隔元素
  • excerpt 的最终长度不超过整数 maximum_length
  • 如果 words 的所有元素不在 excerpt 中, 附加一个省略号 excerpt
  • 只有 words 的全部元素出现在 excerpt

丑陋的解决方案

words = ('Your mother was a hamster and your ' +
'father smelled of elderberries!').split()
maximum_length = 29
excerpt = ' '.join(words) if len(' '.join(words)) <= maximum_length else \
' '.join(words[:max([n for n in range(0, len(words)) if \
len(' '.join(words[:n]) + '\u2026') <= \
maximum_length])]) + '\u2026'
print(excerpt) # Your mother was a hamster…
print(len(excerpt)) # 26

是的,这行得通。 Your mother was a hamster and适合 29,但没有为省略号留出空间。但是男孩是丑陋的。我可以把它分解一下:

words = ('Your mother was a hamster and your ' +
'father smelled of elderberries!').split()
maximum_length = 29
excerpt = ' '.join(words)
if len(excerpt) > maximum_length:
maximum_words = max([n for n in range(0, len(words)) if \
len(' '.join(words[:n]) + '\u2026') <= \
maximum_length])
excerpt = ' '.join(words[:maximum_words]) + '\u2026'
print(excerpt) # 'Your mother was a hamster…'

但现在我创建了一个我永远不会再使用的变量。似乎是浪费。它并没有真正让任何东西变得更漂亮或更容易理解。

有没有我还没有见过的更好的方法来做到这一点?

最佳答案

请参阅我关于为什么“简单胜于复杂”的评论

也就是说,这是一个建议

l = 'Your mother was a hamster and your father smelled of elderberries!'

last_space = l.rfind(' ', 0, 29)

suffix = ""
if last_space < 29:
suffix = "..."

print l[:last_space]+suffix

这不是您 100% 需要的,但很容易扩展

关于python - 椭圆化列表连接,Pythonically,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24021065/

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