Как прочитать элемент массива внутри функции печати в 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]}")