我正在寫一些代碼,並遇到以下循環。是否有寫這個更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