gpt4 book ai didi

Python - 在列表中换行文本

转载 作者:太空宇宙 更新时间:2023-11-03 15:57:22 25 4
gpt4 key购买 nike

我正在尝试编写一个函数,它接受一些文本和一个列表,然后如果列表中的最后一个元素足够小以便它可以将文本附加到最后一个元素并且仍然少于 10 个字符,那么执行它。否则,将其单独附加到列表中。我遇到的问题是,如果文本的长度为 25 个字符。

例如,

l = ["12345678", "123456789"]

>>> a("a", l)
["12345678", "123456789a"]

>>> a("123456789123456789123", l)
["12345678", "1234567891", "2345678912", "3456789123"]

这是我目前的情况

def a(st, lst):
last = 10 - len(lst[-1])

if last < len(st):
lst[-1] += st[:last]
lst.append(st[last:])
else:
lst[-1] += st

最佳答案

问题是 st(在您给定的函数中)可以是任意长度,因此您必须添加任意数量的元素 .现在,如果某些事情是任意的,通常会调用一个循环(forwhile)。

算法本身由两个阶段组成:在第一个阶段,我们检查 lst 的最后一个元素中还剩下多少空间。我们用(的一部分)st 填充该元素。你可以这样做:

left = 10-len(lst[-1])
lst[-1] += st[:left]

注意这里不需要if:如果没有剩余空间,它不会添加任何字符,而且如果st中的字符太少> 切片将简单地返回一个子字符串。

现在我们只需要将剩余的字符以 10 个为一组添加到 lst。我们可以通过编写一个从 left 开始的 for 循环来做到这一点(因为我们可以省略第一个 left 字符)并跳转 10 个位置直到它到达 st 环的末端:

for i in range(left,len(st),10):
# ... do something
pass

很清楚我们必须做什么:将切片 st[i:i+10] 添加到 lst。所以我们把 for 循环变成:

for i in range(left,len(st),10):
lst.append(st[i:i+10])

最后我们只需要返回lst。把它们放在一起我们得到了:

def a(st, lst):
# phase 1
left = 10-len(lst[-1])
lst[-1] += st[:left]

#phase 2
for i in range(left,len(st),10):
lst.append(st[i:i+10])

return lst

请注意,此解决方案在给定列表上运行。如果你想复制一份,你可以添加一行:

def a(st, lst):
<b># make copy</b>
<b>lst = list(lst)</b>

# phase 1
left = 10-len(lst[-1])
lst[-1] += st[:left]

#phase 2
for i in range(left,len(st),10):
lst.append(st[i:i+10])

return lst

关于Python - 在列表中换行文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42472287/

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