[英]How to use list comprehention to equal to more than one variable in python?
假設我有以下物品
_example = namedtuple('example',['x','y'])
我收集了很多這樣的例子
examples = magic_function_that_returns_a_list_of_examples()
我要替換以下2行
xs = [ e.x for e in examples]
ys = [ e.y for e in examples]
遵循這樣的方式...
xs,ys = [ [e.x,e.y] for e in examples]
換句話說,是否可以利用列表理解一次設置兩個變量?
您可以轉置namedtuple
的列表並將其解壓縮:
xs, ys = zip(*examples)
例如:
from collections import namedtuple
example = namedtuple('example',['x','y'])
examples = [example(i, j) for i in range(5) for j in range(5)]
xs, ys = zip(*examples)
print(xs)
print(ys)
輸出:
(0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4)
(0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4, 0, 1, 2, 3, 4)
具有列表理解的任何解決方案都不必要地復雜化,最好用您給出的兩個列表理解來代替。 如果您想一行完成,列表理解最清晰,最易讀的方式是
xs, ys = [e.x for e in examples], [e.y for e in examples]
但是,我認為zip(*examples)
可能更好。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.