首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何创建嵌套的for循环,在该循环中我可以控制初始循环索引值

如何创建嵌套的for循环,在该循环中我可以控制初始循环索引值
EN

Stack Overflow用户
提问于 2020-02-05 08:08:41
回答 3查看 69关注 0票数 0

似乎没有一种方法可以用Python编写这种类型的for循环,因为我正在尝试将这段javascript代码转换/重写为Python。如何在嵌套循环中设置初始循环索引,如j?

下面是我的JS代码:

代码语言:javascript
复制
// Write a function called findGreaterNumbers which accepts an array and returns the number of times a number is followed by a larger number.
// Examples:
// findGreaterNumbers([1,2,3]) // 3 (2 > 1, 3 > 2, and 3 > 1)
// findGreaterNumbers([6,1,2,7]) // 4
// findGreaterNumbers([5,4,3,2,1]) // 0
// findGreaterNumbers([]) // 0

function findGreaterNumbers(arr) {
  let count = 0
  for (let i= 0; i < arr.length; i++){
    for (let j= i + 1; j < arr.length; j++){
      if(arr[j] > arr[i]){
        count++;
    }
  }
}
  return count;
}
EN

回答 3

Stack Overflow用户

发布于 2020-02-05 08:12:06

您可以使用内置的range,如下所示:

代码语言:javascript
复制
for i in range(len(arr)):
    for j in range(i+1, len(arr)):
        # work with i and j as required
票数 2
EN

Stack Overflow用户

发布于 2020-02-05 08:19:38

您可以使用itertools.combinations来实现以下目的:

代码语言:javascript
复制
from itertools import combinations
def findGreaterNumbers(arr):
    return sum(b > a for a, b in combinations(arr, 2))
票数 2
EN

Stack Overflow用户

发布于 2020-02-05 15:13:28

控制初始循环索引值:

在javascript中:for (let i= 0; i < arr.length; i++){

在Python中:for i in range(0, len(arr), 1) :

或者:for i in range( len(arr) ) :

循环中的循环:

在javascript中:

代码语言:javascript
复制
  for (let i= 0; i < arr.length; i++){
     for (let j= i + 1; j < arr.length; j++){

在Python中:

代码语言:javascript
复制
for i in range(len(arr)):
    for j in range(i+1, len(arr), 1):

将此javascript代码重写为Python

代码语言:javascript
复制
def findGreaterNumbers(arr):
    count = 0
    for i in range(len(arr)):
        for j in range(i + 1, len(arr), 1):
            if arr[j] > arr[i]:
                count += 1
    return count

目前,你可能看不到人们在python中使用loop in loop来完成简单的任务,相反,人们经常使用list comprehension。示例:

代码语言:javascript
复制
arr = [6, 1, 2, 7]
result = [f'{x} < {i}' for c, x in enumerate(arr) for i in arr[c:] if x < i]
# ['6 < 7', '1 < 2', '1 < 7', '2 < 7']
len(result) # 4
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60067300

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档