Как увеличить переменные внутри аргумента?

#python #variables #increment

#python #переменные #увеличить

Вопрос:

В приведенном ниже коде я хочу создать список строк и передаю переменную min методу в качестве аргумента:

 max_list = [1 , 2 , 3]
min = 0
output = ["{a}   {b}".format(a=min, b=max) for max in max_list]
  

Тем не менее, я хочу увеличивать min каждый раз, когда я создаю объект списка.
Есть ли способ python для достижения того же результата с помощью оператора ? По-видимому, я не могу использовать min в этом случае, поскольку это код python.

Ожидаемый результат:

 ['0   1', '1   2', '2   3']
  

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

1. пожалуйста, поделитесь своим ожидаемым результатом

2. Вы не должны использовать min или max в качестве имен переменных, поскольку это зарезервированные ключевые слова python. попробуйте сделать это практикой

3. Спасибо, я обращу на это внимание.

Ответ №1:

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

 max_list = [1, 2, 3]
output = [f"{min}   {max}" for min, max in enumerate(max_list)]
print(output)
  

Вывод:
['0 1', '1 2', '2 3']

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

1. Большое вам спасибо, именно тот результат, который я хочу, так что я понимаю, что нет «простого способа»? как в C?

2. вы имеете в виду в python?, да

Ответ №2:

Во min -первых, и max являются неудачными именами переменных в python, поскольку они затеняют встроенные min функции и max функции. Что касается увеличения на 1, вы можете использовать itertools.count следующий способ:

 import itertools
max_list = [1 , 2 , 3]
mn = itertools.count(0)
output = ["{a}   {b}".format(a=next(mn), b=mx) for mx in max_list]
print(output)
  

Вывод:

 ['0   1', '1   2', '2   3']
  

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

1. Большое вам спасибо, плюс ответ выше, поэтому я могу использовать enumerate и itertools.count плюс next для достижения того же результата в C. Но позвольте мне быть жадным здесь, есть ли более простой способ сделать это? например, min в C для каждой итерации?

2. @heihei: Я этого не знаю, поскольку вы не объяснили это, я предположил, что вы имели в виду в смысле JavaScript. Независимо от этого вам может быть полезно знать, что то, что вы использовали, вызывается в понимании списка python.

Ответ №3:

Начиная с Python 3.8, вы можете использовать выражение присваивания := . Но поскольку приращение произойдет до возврата результата выражения like min , вам необходимо инициализировать min -1

 max_list = [1 , 2 , 3]
min = -1
output = ["{a}   {b}".format(a=(min := min   1) , b=max) for max in max_list]