python - 如何在没有 for 循环的情况下访问列表中类的属性
问题描述
如何在没有 for 循环的情况下访问列表中类的属性?我一直在创建列表并循环遍历它们是低效的,所以我试图避免这样的干净代码。
kill_the_loop.py
# Define our arbitrary class
class IntRelationships(object):
def __init__(self, a, b):
self.a = a
self.b = b
self.diff = abs(b-a)
def add(self):
return self.a + self.b
# create a class list
relationship_list = [ IntRelationships(1,2), IntRelationships(2,4), IntRelationships(4, 8)]
# How I currently access attributes in list
large_diff_list = []
for relationship in relationship_list:
if relationship.diff > 1:
large_diff_list.append(relationship)
# How imagine one could do it without a loop and array initialisation
large_diff_list2 = relationship_list[ relationship_list[:].diff > 1 ]
解决方案
您可以使用列表理解:
large_diff_list = [r for r in relationship_list if r.diff > 1]
推荐阅读
- reactjs - React Routes 重定向到 Auth 链接的外部 URL
- java - 尝试在单独的行上打印字符串
- ajax - 构建一个基于 AJAX 的 wordpress 插件
- java - 如何在java中创建一个带有节点的通用类型的get方法
- reactjs - 在 React 中仅渲染下一个未填充的表单组件
- python - 在Python中计算日期之间的天数?
- datetime - 如何将 chrono DateTime 设置为特定的日期和时间?
- java - 为 Jackson 自定义反序列化程序抛出带有 HTTP 状态代码的自定义异常
- python - 微信评论页面有链接,但是抓包软件和get请求获取的内容不一样
- arrays - 合并来自多个工作表的表