从lis创建一个列表元组

2024-09-25 00:23:14 发布

您现在位置:Python中文网/ 问答频道 /正文

有没有办法从列表理解中创建一个列表元组?在

比如:

actual_clients_emails, actual_client_names = [partner.email, partner.name for partner in op_client.ResPartner.browse([])]

我想从一个列表中创建两个列表。在

我可以这样做:

^{pr2}$

Tags: nameinclient列表forpartnernamesemail
3条回答

是的。在

client_names = tuple([partner.email, partner.name for partner in op_client.ResPartner.browse([])])

我喜欢优雅的单行代码,但在这种情况下,为了清晰起见,我宁愿将其拆分:

partners = op_client.ResPartner.browse([]) # get the partners list
actual_clients_emails = [p.email for p in partners]
actual_client_names = [p.name for p in partners]

如果“partners”是一个列表,那么这应该可以正常工作。在

如果不是这样,它就是一个生成器,那么您不应该请求它两次来生成您的伙伴序列。在这种情况下,该代码应该证明更好:

^{pr2}$

在我看来,第二种解决方案的可读性较差,因此更糟。不过,它更像Python,也更多才多艺。在

这只需使用the ^{} built-in function完成:

actual_clients_emails, actual_client_names = zip(
    *[(partner.email, partner.name)
      for partner in op_client.ResPartner.browse([])])

相关问题 更多 >