擅长:python、mysql、java
<p>当您调用<code>return</code>时,您正在结束函数。这意味着一旦你找到第一对,你的函数就结束了,你再也找不到了</p>
<p>要解决这个问题,您应该在名为<code>good_pairs</code>(或任何您想要的)的函数中添加一个数组。与其写<code>return (lst[i], lst[indices[target]])</code>,不如写<code>good_pairs.append((lst[i], lst[indices[target]]))</code></p>
<p>最后,只需返回<code>good_pairs</code>列表</p>
<p>然后用你想要的格式打印出来</p>
<p>最终代码:</p>
<pre><code>def find_sum(s, lst):
s.sort()
good_pairs = []
indices = {x: i for i, x in enumerate(lst[:len(lst)//2])}
# print(indices)
for i, x in enumerate(lst):
target = s - x
if target in indices:
good_pairs.append((lst[i], lst[indices[target]]))
return good_pairs
lst = [2, 4, 5, 6, 7, 8]
print(find_sum(12, lst))
</code></pre>
<p>我首先对数组进行排序,然后仅枚举数组的一半以防止重复。归功于@enzo</p>
<p>希望这有帮助,祝你好运:)</p>