mylist = [right_branchcode, right_branchname, right_sellingcode, right_advcorp, right_childparent, \
right_eliteCategoryId, right_partyid, right_retailmga]
for item in mylist:
if len(item) > 0:
print(item)
else:
print()
如果for循环打印一个项目,我希望能够返回“ True”。最终目标是触发一个电子邮件通知,其中还包含打印(项目)。我只是不知道如何为包含if语句的for循环分配运算符。
我希望这很清楚。我仍在学习,有时很难表达自己的需求。
谢谢
答案 0 :(得分:2)
我不确定我是否理解正确,但是您可以简单地在if语句中分配一个变量。
mylist = [right_branchcode, right_branchname, right_sellingcode, right_advcorp, right_childparent, \
right_eliteCategoryId, right_partyid, right_retailmga]
for item in mylist:
if len(item) > 0:
print(item)
bool_var = True
else:
print()
print(bool_var) # It will print true if item is found
您也可以在其中使用return
,如果要在找到项目时停止循环,也可以使用break
。
答案 1 :(得分:2)
循环本身不是对还是错;这是一个流控制语句,而不是表达式。您要查找的是 flag (布尔值变量),其值指示是否打印了非空值。
mylist = [...]
printed_something = False
for item in mylist:
if item:
print(item)
printed_something = True
else:
print()
循环完成后,您可以根据需要使用printed_something
的值。如果在迭代过程中至少看到一个非空值,则它将仅更改为True
。
答案 2 :(得分:0)
在循环之前将变量初始化为False。在循环内部,如果您打印任何内容,则将该变量设置为True。最后,在循环结束后,返回变量。
mylist = [... stuff ...]
myflag = False
for item in mylist:
if len(item) > 0:
print(item)
myflag = True
else:
print()
return myflag
答案 3 :(得分:0)
最干净的方法是只在循环内执行所需的代码(例如发送或不发送电子邮件)。但是,如果您真的想要分离问题,并将电子邮件发送逻辑与迭代逻辑分离,则可以使用生成器。这与让迭代器返回(yield
)值的概念相对应。
mylist = [...]
def iterate_over_list(l):
for item in l:
if len(item) > 0:
yield True
item_iterator = iterate_over_list(mylist)
for item in item_iterator:
if item:
print('Send email') # replace with email-sending code
else:
print("Don't send email")