在Python中有没有更好的方法?

0 投票
4 回答
1595 浏览
提问于 2025-04-16 05:32

在编程中,有时候我们会遇到一些问题,像是代码运行不正常或者出现错误。这些问题可能是因为我们没有正确理解某些概念,或者在写代码的时候犯了一些小错误。

比如,有些人可能在使用某个函数的时候,不太清楚这个函数具体是干什么的,或者它需要什么样的输入。这就像你在做菜的时候,如果不知道某个调料的作用,就可能做出不好吃的菜。

另外,编程中还有很多术语和概念,初学者可能会觉得很复杂。其实,只要慢慢来,逐步理解这些内容,就会变得简单很多。

总之,遇到问题时,不要着急,先冷静下来,仔细检查代码,或者查阅相关资料,慢慢你就会掌握这些知识了。

ids = []

for object in objects:
  ids += [object.id]

4 个回答

3

还有一种方法:

ids = map(lambda x: x.id, objects)
4

标准的(也就是“pythonic”,也就是最干净的)做法是使用列表推导式:

ids= [obj.id for obj in objects]

这个方法适用于所有Python版本≥2.0。

其他方法(仅供参考)

在Python 2中,你还可以这样做:

ids= map(lambda x: x.id, objects)

这个方法应该是最慢的,或者

# note: Python ≥ 2.4
import operator
ids= map(operator.attrgetter('id'), objects)

这个方法可能是最快的,虽然我觉得速度差别不会太大;无论如何,列表推导式的清晰性比速度提升更重要。

如果你想在Python 3中使用其他方法,你需要把map的调用放在list的调用里面:

ids= list(map(operator.attrgetter('id'), objects))

因为在Python 3中,map这个内置函数返回的是一个生成器,而不是一个列表。

27

你可以使用列表推导式:

ids = [object.id for object in objects]

供你参考:

这两种方法的结果是一样的。在很多情况下,列表推导式是一种优雅且符合Python风格的做法,可以实现你提到的功能。

撰写回答