我正在写一些代码,并遇到以下循环。是否有写这个更pythonic的方式。For循环,迭代和调用
# obj_list = list of tuples [(someint, object)...]
for a, obj in obj_list:
obj.callable()
我正在写一些代码,并遇到以下循环。是否有写这个更pythonic的方式。For循环,迭代和调用
# obj_list = list of tuples [(someint, object)...]
for a, obj in obj_list:
obj.callable()
不是,它看起来很好。您可以使用_
而不是a
这表示该值未被使用,但这是非常次要的一点。
如果obj.callable()
是返回一个值,你想存储的值,您可以使用列表理解:
results = [obj.callable() for _, obj in obj_list]
results
将包含由每个调用obj.callable()
返回的值的列表。
虽然列表理解在大多数情况下可能更可取,但您可以将其写为'results = map(methodcaller('callable'),map(itemgetter(1),obj_list))''。 – jfs 2015-02-23 11:39:37
不是。可能会有“更pythonic”的方式,但他们会牺牲可读性或做一些稍微不同的事情。
E.g.你能不能列出内涵:
returns = [ x.callable() for dummy, x in obj_list]
但它看起来几乎一模一样并将结果(可能是不可取的)。
您可以使用map
,但函数可以取出元组中所需的元素并在其上调用方法(尽管可能),可能看起来像是一种混淆。
什么是“a”,您打算如何使用它?你想存储什么'obj.callable()'返回? – 2015-02-23 10:31:03