鉴于:
obj_list = [obj0, obj1, obj2, obj3...]
我想:
names_list = [obj0.name(), obj1.name(), obj2.name(), obj3.name()...]
paths_list = [obj0.path(), obj1.path(), obj2.path(), obj3.path()...]
因此,出于调试目的,我可以这样做:
print names_list
或
if my_path not in paths_list ...
当然我可以做到
name_list =[]
path_list = []
for obj in obj_list:
name_list.append(obj.name())
path_list.append(obj.path())
但是我不妨在C中写这个。当然有一种python方式在一个小命令中执行此操作,但我找不到它。
我正在使用python 2.7
答案 0 :(得分:7)
听起来像是list comprehensions的工作。
names_list = [obj.name() for obj in obj_list]
答案 1 :(得分:4)
在Python中执行此操作的(语法上)简单方法是使用map()
names_list = map(lambda x: x.name(), obj_list)
答案 2 :(得分:4)
您可以使用operator.methodcaller
,就像这样
from operator import methodcaller
get_name, get_path = methodcaller("name"), methodcaller("path")
names, paths = map(get_name, obj_list), map(get_path, obj_list)