python - 在 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)
我想返回列表中元素的位置,其总和等于期望值,我上面的代码没有输出期望值,解决这个问题的最佳方法是什么?
解决方案
看看有什么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
推荐阅读
- java - 在 Azure 搜索上上传文档后,我可以立即删除它吗?
- json - 长度在 Jmeter 的 JSON 提取器中不起作用
- arrays - 如何从 Firestore 的 nuxt 中的 asyncData 返回一个数组以用于 SSR?
- postgresql - Sequelize -- 将 options.distinct 与 Where 子句一起使用?
- c# - Debian 9.9 上 Visual Studio Code 中的 System.Data.SqlClient
- r - 如何将 R 数据框导出到 Power Query 表
- processing - 处理中的数学变量
- wordpress - 负载不能遵循超过 20 个重定向
- python - 从 HTML 中提取标签之间的特定文本部分
- android - 如何在 recylerview 中添加带文本的分隔符、分隔符或标题