for skill in skills if skill != "engineering":
...
技能是一个列表,我想在遍历该列表时进行检查。
答案 0 :(得分:2)
这是正确的版本
breakfast_menu['breakfast_menu']['food'][1]['calories'] = 900
答案 1 :(得分:2)
另一种方式。
for skill in [skill for skill in skills if skill != "engineering"]:
答案 2 :(得分:1)
需要为单独的行,并且for循环行必须以冒号以及if语句结尾。
skills = ['test','testing', 'engineering']
for skill in skills:
if skill != "engineering":
print(skill)
答案 3 :(得分:0)
您可以使用过滤器
for skill in filter(lambda skill: skill != "engineering", skills):
这更具可读性。如果您的过滤需要更多逻辑,则可以轻松地用函数替换lambda表达式。
答案 4 :(得分:0)
如果您想过滤掉任何不等于'engineering'
的技能,则可以使用filter
:
for skill in filter('engineering'.__ne__, skills):
我个人更喜欢lambda
答案 5 :(得分:0)
for skill in skills if skill != "engineering":
无效,因为在Python中,显式for
循环采用以下形式:
for item in collection:
此行分为四个部分
for
语句item
,即迭代中的当前元素in
运算符问题中的代码与此格式不匹配,因此在语法上无效。
但是,Python在内部构造中也具有隐式for
循环,称为理解。用于创建列表的简单理解-称为列表理解-如下:
new_list = [thing for thing in collection]
此行包括:
new_list
)的变量=
[ ]
,表示结果将是一个列表for
子句表示隐式for
循环in
运算符问题中的代码看起来好像是从包含条件的列表理解中获取的,其形式为
new_list = [thing for thing in collection if some_condition_is_true]
Python tutorial具有出色的section on list comprehensions,它涵盖了更复杂的类型-多个循环和/或条件。也有创建字典和集合的字典和集合理解。 generator expressions使用相似的语法,但是创建生成器而不是具体的集合。
答案 6 :(得分:0)
解决方案:
skills = ["testing", "management", "engineering"]
for skill in [skill for skill in skills if skill != "engineering"]:
print("%s" % skill)
输出:
>>>python test.py
testing
management