首页 > 解决方案 > 在 for 循环中使用两个变量进行列表操作

问题描述

我希望我的输出是 [i, j] 其中 list[i] + list[j] 等于目标值。例如;

数字=[2,7,11,15]

目标=9

输出=[0,1] 作为 num[0]+num[1]==target 的总和

我尝试了我的代码代码;

nums=[2,7,11,15]
target=9
b=len(nums)
for i,j in zip(range(b),range(b)):
    if nums[i]+nums[j]==target:
        print(i,j)

我想返回列表中元素的位置,其总和等于期望值,我上面的代码没有输出期望值,解决这个问题的最佳方法是什么?

标签: pythonpython-3.xlistfor-looplist-comprehension

解决方案


看看有什么zip()作用:

list(zip(range(4), range(4)))
[(0, 0), (1, 1), (2, 2), (3, 3)]

您没有迭代所有组合,只是 i = j 的情况。试试这个itertools模块,它为这种情况提供了许多有效的迭代器。

import itertools


nums=[2,7,11,15]
target=9
b=len(nums)
for i,j in itertools.combinations(range(b), 2):
    if nums[i]+nums[j]==target:
        print(i,j)

https://docs.python.org/3/library/itertools.html#itertools.combinations


推荐阅读