Для проблемы l oop, после и более раннего символа - PullRequest
0 голосов
/ 22 января 2020

Итак, у меня проблема, я хочу, чтобы для jl oop начинался на один символ после для il oop, но я не могу использовать range() функция.

for i in b:
  for j in b:
    if i < j:
      print(i * 2)
      print(j * 2)
      break

Ответы [ 2 ]

1 голос
/ 22 января 2020

Если диапазон вообще не разрешен, то вот версия с перечислением.

for index, i in enumerate(b):
    for j in b[index:]:
        if i < j:
          print(i * 2)
          print(j * 2)
          break

Используйте длину списка в качестве конца диапазона и индекс i в качестве начала диапазона для второго l oop.

for i in range(len(b)):
  for j in range(i, len(b)):
    if b[i] < b[j]:
      print(b[i] * 2)
      print(b[j] * 2)
      break

0 голосов
/ 22 января 2020

Вместо range и for-l oop вы можете использовать while-l oop, который проверяет, меньше ли счетчик размера вашего итерируемого объекта b.

size_of_b = len(b)

i = 0
while i < size_of_b:
    # Set j to one more than i
    j = i + 1
    while j < size_of_b:
        if b[i] < b[j]:
            print(b[i] * 2)
            print(b[j] * 2)
            # Break out of the inner "while j" loop
            break

        # Increment "j" for the inner "while j" loop
        j += 1

    # Increment "i" for the outer "while i" loop
    i += 1

Для более продвинутого способа Pythoni c вы можете использовать enumerate встроенную функцию . Возвращает индекс и значение для каждого шага итерируемого:

# Here I'm using more descriptive variable names so it's easier to follow.
for outer_index, outer_value in enumerate(items):
    # For the inner loop, we can slice the list so it starts on 1 + the outer_index
    inner_index = outer_index + 1
    for inner_value in items[inner_index:]:
        if outer_value < inner_value:
            print(outer_value * 2, inner_value * 2, sep="\n")
            break
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...