python - 从实例列表中创建一个简单列表的 pythonic 习惯用法是什么?

标签 python sqlalchemy list-comprehension

我有一个由 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}

以及set comprehensions :

{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/

相关文章:

for-loop - 了解 Clojure 中的列表理解修饰符顺序

python - 从列表中提取值并生成元组

python - 在 Python 中有效地获取直方图 bin 的索引

Python通过字符串数组从字符串中提取标签

python - 删除一个特定列上的重复项并添加一个新列作为重复记录的计数 pandas

python - 访问与外键链接的 SQLAlchemy 模型

python - 如何在计算机关闭时运行 cmd 脚本?

python - 如何使用flask sqlalchemy使过滤查询更有效?

python - 使用 Pandas/SQLAlchemy 导入日期时间

python - Python 中的嵌套列表理解