【发布时间】:2018-02-27 22:54:41
【问题描述】:
我是python编程新手。如何优化这段代码?它还给出了一个错误 UnboundLocalError: local variable 'list1' referenced before assignment.但如果我在循环之外定义 list1 ,则执行大型列表需要花费太多时间。
def sum_pairs(ints, s):
list2 = []
for i in range(len(ints)):
if i == len(ints) - 1:
break
for j in range(i + 1, len(ints)):
if i != j and (ints[i] + ints[j] == s):
list1 = []
if list2 == []:
list1[0:2] = ints[i], ints[j]
list2[0:2] = i, j
elif list2[-1] > j:
list1[0:2] = ints[i], ints[j]
list2[0:2] = i, j
break
if list1 == []:
return None
return list1
print(sum_pairs([10, 5, 2, 3, 7, 5], 10))
我正在编写一个函数,它按照出现的顺序返回前两个值(请从左边解析),加起来形成总和。例如:
**sum_pairs([10, 5, 2, 3, 7, 5], 10)
# ^-----------^ 5 + 5 = 10, indices: 1, 5
# ^--^ 3 + 7 = 10, indices: 3, 4 *
# * entire pair is earlier, and therefore is the correct answer
== [3, 7]**
【问题讨论】:
-
您能否深入了解您希望该函数做什么?
-
在不知道您要做什么的情况下,我可以看到一些问题:您通过在
for循环中将list1设置为[]来不断覆盖list1。那可能不是你想要的。if i is not j也应该是if i != j- 您需要测试是否相等,而不是对象身份。此外,您的缩进已关闭。 -
我正在编写一个函数,它按照出现的顺序返回前两个值(请从左边解析),加起来形成总和。例如。 sum_pairs([10, 5, 2, 3, 7, 5], 10) # ^-----------^ 5 + 5 = 10,索引:1, 5 # ^--^ 3 + 7 = 10, indices: 3, 4 * # * 整对较早,因此是正确答案 == [3, 7]
-
您的 list1 似乎没有在范围内定义,您可以验证缩进吗?
标签: python python-3.x function optimization