【发布时间】:2021-07-08 09:32:49
【问题描述】:
我需要编写一个函数,接收一个字符串和组数,然后返回所有可能的切片选项。
即对于func('hello', 3):
[['h', 'e', 'llo'], ['h', 'el', 'lo'], ['h', 'ell', 'o'], ['he', 'll', 'o'], ['he', 'l', 'lo'], ['hel', 'l', 'o']]
如何在不使用递归的情况下做到这一点?这应该只能使用循环和列表来实现。
这类似于“将球分成箱”的问题,但在这种情况下它是不同的,因为对象的顺序永远不会改变,只是切片。
这是我目前拥有的代码:
def divide_into_two(word):
list_of_divs = []
for i in range(1, len(word)):
list_of_divs.append([word[0:i], word[i:len(word)]])
return list_of_divs
它只是把一个词分成两组。我想我们需要某种内部循环来继续划分它,以防它有更多的组,但我不知道该怎么做。
【问题讨论】:
-
构造总和为
N = len(your_str)的所有正数元组。毫无疑问,这已经解决了。 -
有趣的谜题。要获得有关 stackoverflow 的帮助,强烈建议您解释(通过编辑您的问题)您到目前为止所尝试的内容。
-
蒂姆,我确信这已经解决了。构建元组听起来更像是一个将球放入垃圾箱的问题,但对象的顺序必须保持不变。例如 ["e", "lmon"] 不是 "lemon" 的有效除法。 @timgeb
-
如果您有递归解决方案,您可以使用堆栈将其机械地转换为迭代解决方案。
-
@kanyeeast 元组方法不会打乱字符串。如果您正在构建所有总和为
len(your_str)的元组,那么您将得到类似(3, 1, 1)的元组,它对应于['hel', 'l', 'o']。或者(2, 2, 1),对应['he', 'll', 'o']。
标签: python list loops for-loop