簡體   English   中英

如何使用列表理解等於python中的多個變量?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM