#python
Вопрос:
Я знаю, как сделать оператор if внутри цикла for, но я не знаю, как также добавить туда «еще».
Например:
check_state = 1
for v in (v for v in range(0,10 1, 1) if check_state == 1):
print v
Вывод: Он будет печатать от 0 до 10
И я хочу добавить там утверждение «еще», что-то вроде этого:
check_state = 0
for v in (v for v in range(0,10 1, 1) if check_state == 1, else v for v in range(1)):
print v
Надеясь на этот вывод: выводит 0
Я не знаю, как выразить это в правильном синтаксисе. Кто-нибудь может помочь?
Спасибо!
Ответ №1:
Я думаю, что вы хотите использовать выражение if для выбора между двумя вызовами диапазона:
for v in (range(0,10 1, 1) if check_state == 1 else range(1)):
Ответ №2:
check_state = 1
#can be given 0 or 1, if 1 then it will print '0-10' and if 0 then it will print only '0'
for v in range(0,11):
if check_state == 1:
print(v,end="")
elif check_state == 0:
print(v)
break
Ответ №3:
Есть ли какая-то особая причина, по которой вы используете генератор?
Вы можете сделать это в понимании списка следующим образом:
[v for v in (range(0,11) if check_state == 1 else range(1))]
Также может быть полезно рассмотреть это с традиционной точки зрения условного цикла, чтобы понять, что здесь происходит.
x = []
check_state = 1
for v in range(0,11):
if check_state == 1:
x.append(v)
elif check_state == 0:
x = [0]
Оба они выведут список целых чисел вместо того, чтобы распечатывать их, как в исходном коде.
Ответ №4:
Есть 2 возможных способа, которыми вы можете сделать это в сокращенной записи:
check_state = 0
for v in range(11) if check_state == 1 else range(1):
print(v)
или же:
check_state = 0
for v in check_state == 1 and range(11) or range(1):
print(v)