花俏的标题标题。 我想创建一个值列表,该值对应于对象列表的变量。可以这样巧妙地完成;
class Example:
def __init__(self, x):
self.x = x
objlist = [ Example(i) for i in range(10) ]
DESIRED_OUTCOME = [ obj.x for obj in objlist ]
但是,这似乎令人讨厌且麻烦,所以我想知道是否有一种方法可以一次索引所有值。
我想知道是否有一种语法可以让我立即取出所有变量,例如从2d数组中提取第一个轴数组;
ex = example2darray[:,1] #2d array syntax
OUTCOME = objlist[:, objlist.x] #Is there something like this that exists?
>>> [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
我希望这个问题有意义
答案 0 :(得分:0)
与此无关, unpythonic ,IMO,但是如果您真的想“直接”遍历实例的x
值而不是从对象本身获取它们,则可以映射他们operator.attrgetter
:
import operator
objlist = [Example(i) for i in range(10)]
DESIRED_OUTCOME = map(operator.attrgetter("x"), objlist)
# [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
请注意,在Python 3.x上,map()
返回一个迭代器,因此,如果要获得list
的结果,请确保将其转换为一个。另外,除非您以特殊方式构造Example
,否则几乎所有东西都会比您认为“不优雅”的旧列表理解循环要慢。