Как прочитать элемент массива внутри функции печати в Python?

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

1 - Add
2 - Subtract
3 - Divide
4 - Multiply

Для этого я использую следующий фрагмент кода:

> for i in range(1, 5):
>     array = ["Add", "Subtract", "Divide", "Multiply"]
>     print(f"{i} - array[{i-1}]")

Но вывод, который я получаю:

1 - array[0]
2 - array[1]
3 - array[2]
4 - array[3]

Не могли бы вы помочь мне, что я делаю не так? Как я могу вызвать элемент массива внутри функции печати?

4 ответа

Вы должны переместить индексирование списка внутри {}, иначе array будет интерпретироваться как строка:

print(f"{i} - {array[i-1]}")

Но вы используете print функционировать 4 раза в вашей петле. Если, как вы говорите, вы хотите использовать print только один раз вы можете распаковать выражение генератора и использовать sep аргумент:

array = ['Add', 'Subtract', 'Divide', 'Multiply']
print(*(f'{idx} - {val}' for idx, val in enumerate(array, 1)), sep='\n')

То, что вы хотите, это:

print(f"{i} - {array[i-1]}")

Но всегда лучше, чтобы вы инициализировали массив перед циклом, иначе вы создаете один и тот же массив каждый раз, когда запускаете цикл.

Итак, что-то вроде этого более эффективно:

array = ["Add", "Subtract", "Divide", "Multiply"]
for i in range(1, 5):
    print(f"{i} - {array[i-1]}")

# 1 - Add
# 2 - Subtract                                                
# 3 - Divide                                                 
# 4 - Multiply                                     

Это можно изменить на это:

print(i, '-', array[i-1])

Если вы используете формат, интерпретируйте его только в фигурных скобках {}, внешний array рассматривается как строка, поэтому вы можете заставить ее работать так:

 print(f"{i} - {array[i-1]}")

Вы также хотите получить переменную массива: print(f"{i} - {array[i-1]}")

Другие вопросы по тегам