gpt4 book ai didi

python - 将字符串拆分为长度连续增加的子字符串 block

转载 作者:行者123 更新时间:2023-12-03 22:47:04 25 4
gpt4 key购买 nike

假设我有这个字符串:

a = 'abcdefghijklmnopqrstuvwxyz'
我想将此字符串拆分为多个块,如下所示:
['a', 'bc', 'def', 'ghij', 'klmno', 'pqrstu', 'vwxyz  ']
这样每个块都有不同数量的字符。例如,第一个应该有一个字符,第二个两个等等。
如果最后一个块中没有足够的字符,那么我需要添加空格以匹配长度。
到目前为止我试过这个代码:
print([a[i: i + i + 1] for i in range(len(a))])
但它输出:
['a', 'bc', 'cde', 'defg', 'efghi', 'fghijk', 'ghijklm', 'hijklmno', 'ijklmnopq', 'jklmnopqrs', 'klmnopqrstu', 'lmnopqrstuvw', 'mnopqrstuvwxy', 'nopqrstuvwxyz', 'opqrstuvwxyz', 'pqrstuvwxyz', 'qrstuvwxyz', 'rstuvwxyz', 'stuvwxyz', 'tuvwxyz', 'uvwxyz', 'vwxyz', 'wxyz', 'xyz', 'yz', 'z']
这是我想要的输出:
['a', 'bc', 'def', 'ghij', 'klmno', 'pqrstu', 'vwxyz  ']

最佳答案

我认为任何一个 liner 或 for 循环都不会看起来那么优雅,所以让我们使用生成器:

from itertools import islice, count

def get_increasing_chunks(s):
it = iter(s)
c = count(1)

nxt, c_ = next(it), next(c)
while nxt:
yield nxt.ljust(c_)
nxt, c_ = ''.join(islice(it, c_+1)), next(c)

return out
[*get_increasing_chunks(a)]
# ['a', 'bc', 'def', 'ghij', 'klmno', 'pqrstu', 'vwxyz ']

关于python - 将字符串拆分为长度连续增加的子字符串 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65462400/

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