考虑一个C样式嵌套的for循环,如下所示:
for i = 0; i < n; i++ {
for j = i; j < n; j++ {
do_something();
}
}
推荐的python翻译是什么?在
在Effective Python之后,我在想:range(len(something))
应该尽量避免使用{
但是enumerate
和{
鉴于
for i in range(len(some_iter)):
for j in range(i, len(some_iter)):
do_something()
看起来一致,但使用range(len(some_iter))
。在
对此,建议使用什么Python样式?在
我尽量使用for
item in itemList:
,而不是使用i
作为变量,i
作为迭代器。在所以第二个
for
循环将列表从当前项的索引切片到末尾。在如前所述,实际上您并没有将}用于任何事情,所以嵌套循环是无稽之谈;您可以将计算的循环次数作为单个顶级循环循环。在
i
或{{从给定的一个输入序列}中可以看到一个唯一的输入序列}:
在没有不必要的索引的情况下,Pythonic等价于:
^{pr2}$如果还需要索引,只需将其与
enumerate
配对:使用
itertools.combinations_with_replacement
(有或没有enumerate
)将更有效,也更通用:如果依赖于索引,则将输入限制为序列,因此如果不首先将它们转换为序列,则任意iterable(set
,dict
,生成器表达式等)将无法工作。使用Pythonic方法意味着您可以接受并使用任何有限iterable,而无需执行手动类型转换和索引。在相关问题 更多 >
编程相关推荐