我有一个由 SQLAlchemy 返回的记录实例列表。
虽然实例有很多属性,但我想要一个只有一个属性的新列表。我的 Java 程序员说:
my_records = query.all()
names = []
for my_record in my_records:
names.append(my_record.name)
...当然可以。但是 Pythonic 的答案是什么?我知道有一个单行代码将这 4 行合并为 1,但发现它就像在谷歌上搜索“for”。
最佳答案
您正在寻找所谓的 list comprehension :
names = [my_record.name for my_record in query.all()]
以上是您示例中 for 循环的简明等价物。
另外,你应该知道有dict comprehensions :
{key:val for key, val in iterable}
{item for item in iterable}
这将分别构造新的字典和集合。
最后,所有这些构造都允许您为每个项目添加要测试的可选条件:
[item for item in iterable if condition]
{key:val for key, val in iterable if condition}
{item for item in iterable if condition}
如果你想根据条件从 iterable 中过滤项目,这很有用。
关于python - 从实例列表中创建一个简单列表的 pythonic 习惯用法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30198638/