Как постепенно присваивать имена переменных, используя числа внутри цикла for в python?

#python #python-3.x #for-loop #iteration

Вопрос:

У меня есть простой код, в котором я хочу обновить имена переменных следующим образом:

 n = 5

for i in range(0, n):
    train_fold_[i], val_fold_[i] = result[i][0],result[i][1]
 

Я хочу, чтобы приведенный выше код генерировал в общей сложности 10 переменных с именами train_fold_0, val_fold_0, train_fold_1, val_fold_1,……, train_fold_4, val_fold_4.

Однако, когда я запускаю этот код, он генерирует только 2 переменные следующим образом: train_fold_i, val_fold_i.

Я знаю, что это чрезвычайно просто, но может ли кто-нибудь, пожалуйста, помочь мне с этим, так как я относительно новичок в python.

Комментарии:

1. Обычно в этом случае вы использовали бы структуру данных (возможно, список). Почему вы хотите иметь 10 разных переменных?

2. Делать train_fold, val_fold = zip(*[result[i] for i in range(n)]) . Теперь вы можете получить доступ к своим десяти значениям train_fold[0] , таким как val_fold[0] , train_fold[1] , и т.д.

3. Если n == len(result) вы можете сделать это проще: train_fold, val_fold = zip(*result)

Ответ №1:

Вы могли бы использовать exec

 n = 5

for i in range(0, n):
    value1, value2 = i, i 1
    exec(f'train_fold_{i}, val_fold_{i} = {value1}, {value2}')
 

затем

 print(train_fold_3, val_fold_3)
>>> 3 4