python - 高效的 double for 循环,其中第二个循环的范围取决于第一个循环的值
问题描述
有没有更快的方法(可能使用itertools
)来实现下面的代码?
for i in range(0,10):
for j in range(0,i+1):
do stuff
do stuff
谢谢。
解决方案
您正在生成带有 replacement 的组合,因此itertools.combinations_with_replacement()
可以为您生成这些组合,尽管使用j
和i
反转:
from itertools import combinations_with_replacement
for j, i in combinations_with_replacement(range(10), 2):
# ...
j
注意和的反转i
;这会产生与嵌套循环相同的值对,只是顺序不同:
>>> sorted(combinations_with_replacement(range(10), 2)) == sorted((j, i) for i in range(10) for j in range(i + 1))
True
推荐阅读
- javascript - 无法使用 https 可调用从云函数返回数据
- javascript - 我可以只使用一个来打印 fetch API 数据吗?
- python - 重新排列熊猫数据框
- laravel - 如何在laravel中获得与子关系的关系?
- python-3.x - 使用 seaborn 进行相关性分析:TypeError: 'float' 对象不能被解释为整数
- spring - 如果 json 对象在 post 请求中缺少键,则引发错误
- python - (Python)我怎样才能知道是否有其他相等的相反符号的值?
- python - 使用 Python 聚合另一列的值的列
- python - vscode 使用方法:from png import *
- java - 使用 HashMap 查找重复项