如何以更简洁,“pythonic”的方式执行以下操作:
for element in some_list:
if some_condition:
element.some_attr = some_value
答案 0 :(得分:1)
您的代码中唯一没有pythonic的是您没有使用4 spaces for indentation。
“Pythonic”并不总是意味着“简洁”;例如,以下内容比您的循环更短,但可读性更低:
[setattr(e, 'some_attr', some_value) for e in some_list if some_condition]
所以,坚持你的代码。
答案 1 :(得分:0)
any(setattr(element, "some_attr", some_value) for element in some_list if some_condition)
不一定是“更多Pythonic” - 但更简洁。函数调用“any”只是为了使生成器被消耗 - 因为它被创建为一个惰性对象,并且只有在获取元素时才会执行操作。
答案 2 :(得分:0)
您的代码没问题。
可能你更喜欢这个:
for element in some_list:
element.some_attr = some_value if some_condition else element.some_attr
但它确实没用了......