Как создать вложенное значение для l oop, где у меня есть контроль над начальным значением индекса l oop - PullRequest
0 голосов
/ 05 февраля 2020

Кажется, нет способа записать этот тип для l oop в Python, потому что я пытаюсь перевести / переписать этот javascript код в Python. Как мне установить начальный индекс l oop как j во вложенном l oop?

Вот мой JS код:

// 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;
}

Ответы [ 3 ]

2 голосов
/ 05 февраля 2020

Вы можете использовать itertools.combinations для цели:

from itertools import combinations
def findGreaterNumbers(arr):
    return sum(b > a for a, b in combinations(arr, 2))
2 голосов
/ 05 февраля 2020

Вы можете использовать встроенную функцию range следующим образом:

for i in range(len(arr)):
    for j in range(i+1, len(arr)):
        # work with i and j as required
1 голос
/ 05 февраля 2020

управление начальным значением индекса l oop:

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

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

или: for i in range( len(arr) ) :


L oop в L oop:

В javascript:

  for (let i= 0; i < arr.length; i++){
     for (let j= i + 1; j < arr.length; j++){

В Python:

for i in range(len(arr)):
    for j in range(i+1, len(arr), 1):

Перепишите этот javascript код в Python

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

В настоящее время вы можете не видеть людей, использующих loop in loop в python для простых задач, вместо этого люди часто используют list comprehension. Примеры:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...