Python: цикл внутри оператора if else в цикле - PullRequest
0 голосов
/ 28 января 2019

Для каждой итерации в данном скрипте я импортирую данные и вычисляю переменную.для простоты я не включаю все эти вещи и допустим, я хочу напечатать идентификатор для каждого из 25 случаев.В любом случае, я помещаю последнее утверждение, оно всегда печатает - либо все итерации для последних данных, либо последнюю итерацию для всех данных.

for data in range(0,5):

    if data==0:
        for iteration in range(0,5):
            # Import some data 
            ID = (data,iteration)

    elif data ==1:
        for iteration in range(0,5):
            # Import some data 
            ID = (data,iteration)

    elif data ==2:
        for iteration in range(0,5):
            # Import some data 
            ID = (data,iteration)

    elif data ==3:
        for iteration in range(0,5):
            # Import some data 
            ID = (data,iteration)           

   elif data ==4:
        for iteration in range(0,5):
            # Import some data 
            ID = (data,iteration)


   ComputedValue = data + iteration                             
   print( 'ComputedValue = %.1d for ID = (%.1d,%.1d)' %(ComputedValue,data,iteration) )

В настоящее время он печатает только для 5 случаев:

ComputedValue = 4 for ID = (0,4)
ComputedValue = 5 for ID = (1,4)
ComputedValue = 6 for ID = (2,4)
ComputedValue = 7 for ID = (3,4)
ComputedValue = 8 for ID = (4,4)

Какие изменения / модификации необходимо выполнить, поэтому он печатает для всех 25 случаев?Спасибо!!Rachit

Edit: я не хочу печатать в конце каждого цикла for, поскольку я хочу создать вектор вычисляемых значений (25 значений) и построить его относительно некоторой переменной.

Ответы [ 3 ]

0 голосов
/ 28 января 2019

Я не хочу печатать в конце каждого цикла for, поскольку хочу создать вектор вычисляемых значений (25 значений)

Ну, так почему бы неВы просто делаете это («создать вектор вычисленных значений»), то ???

values = []
for i in range(5):
   for j in range(5):
       values.append((i, j))

print(values)
0 голосов
/ 28 января 2019

Если вы хотите печатать после каждой итерации, не накапливая результат и не печатая его в конце (как в ответе Бруно), тогда вы можете использовать простую функцию, как в следующем примере:

def f(data, r=range(5)):
    for iteration in r:
        ID = (data, iteration)
        print( 'ComputedValue = %.1d for ID = (%.1d,%.1d)' %(ComputedValue,data,iteration) )

for data in range(5):
    f(data)

Вы можете изменить функцию так, как считаете нужным для своего кода, без необходимости написания всего этого стандартного кода.

0 голосов
/ 28 января 2019

Вам нужно поместить

print( 'ComputedValue = %.1d for ID = (%.1d,%.1d)' %(ComputedValue,data,iteration) )

в конце каждого внутреннего цикла for (но все еще внутри цикла, но не в той же строке, что и for), который печатается для каждой отдельной итерации,

Если вы делаете одинаковые вещи для каждого цикла, вы также можете создать функцию, которую вы вызываете там, с печатью в ней.

Чтобы получить вектор со всеми значениями в конце, вставьтеэта строка в начале (перед внешним циклом for):

hist = []

Затем в каждом внутреннем цикле for добавьте эту строку:

hist.append(id)

Теперь у вас будут все доступные значения послеВы закончили с циклами и можете распечатать их или делать с ними все, что захотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...