类似的问题有1和2,但答案没有帮助。假设我们有一个整数列表。我们希望找到K不相交的列表,使它们完全覆盖给定的列表,并且都具有相同的总和。例如,如果A = [4, 3, 5, 6, 4, 3, 1]然后K = 2答案应该是:
[[3, 4, 6], [1, 3, 4, 5]]
or
[[4, 4, 5], [1, 3, 3, 6]]
Run Code Online (Sandbox Code Playgroud)
我编写了一个代码,该代码仅在以下情况下才有效:K = 2对于较小的列表作为输入,但对于较大的列表,它可以正常工作,因为代码的复杂性很高,操作系统会终止任务。我的代码是:
def subarrays_equal_sum(l):
from itertools import combinations
if len(l) < 2 or sum(l) % 2 != 0:
return []
l = sorted(l)
list_sum = sum(l)
all_combinations = []
for i in range(1, len(l)):
all_combinations += (list(combinations(l, i)))
combinations_list = [i …Run Code Online (Sandbox Code Playgroud) 我有一个包含字符串格式的 python 函数的文本文件。我的代码从文本文件中读取每个函数,为其提供适当的输入,然后运行它。要从文本文件运行函数字符串(例如fun_str),我在代码中使用以下代码片段:
dict = {}
exec(fun_str, globals(), dict)
f, = dict.values()
f()
Run Code Online (Sandbox Code Playgroud)
只要每个函数字符串都具有 python 标准语法(在缩进、换行等方面),代码就可以正常运行。但是,如果代码读取函数字符串,例如:
"def fun(list): output_list = [] for i in list: if i not in output_list: output_list.append(i) return output_list"
Run Code Online (Sandbox Code Playgroud)
(全部排成一行)
然后SyntaxError: invalid syntax是提出与^^^下for。
是否有任何内置模块或任何方法来修复函数字符串,以便它在运行之前遵循标准语法exec?