Pythonzip函数为 其自身的反转(在某种程度上),因此我们可以这样做:

points = [(1,2), (3,4), (5,6), (7,8)]
xs, ys = zip(*points)

现在是xs=[1,3,5,7]ys=[2,4,6,8].

我想知道是否可以用类实例来代替 元组:

from dataclasses import dataclass

@dataclass
class XY:
    "2d point"
    x: float | int
    y: float | int

points = [XY(1,2), XY(3,4), XY(5,6), XY(7,8)]
xs, ys = zip(*[(p.x,p.y) for p in points])

withoutexplicit的 list 理解能力.

当然,结果不是元组(xs,ys),而是具有关键字x的字典 y是因为,如果没有明确的列表理解,我们将收集 all个字段.

推荐答案

使用astuple:

from dataclasses import dataclass, astuple

@dataclass
class XY:
    "2d point"
    x: float | int
    y: float | int
    def __iter__(self):
        return iter(astuple(self))

points = [XY(1,2), XY(3,4), XY(5,6), XY(7,8)]
xs, ys = zip(*points)

或者改为映射它:

xs, ys = zip(*map(astuple, points))

Python相关问答推荐

Pandas 填充条件是另一列

Python 3.12中的通用[T]类方法隐式类型检索

Select 用a和i标签包裹的复选框?

Matlab中是否有Python的f-字符串等效物

重新匹配{ }中包含的文本,其中文本可能包含{{var}

查找两极rame中组之间的所有差异

' osmnx.shortest_track '返回有效源 node 和目标 node 的'无'

如何列举Pandigital Prime Set

Polars:用氨纶的其他部分替换氨纶的部分

在Python中动态计算范围

SQLAlchemy Like ALL ORM analog

从spaCy的句子中提取日期

Scrapy和Great Expectations(great_expectations)—不合作

Plotly Dash Creating Interactive Graph下拉列表

在pandas/python中计数嵌套类别

并行编程:同步进程

如何在Python Pandas中填充外部连接后的列中填充DDL值

将链中的矩阵乘法应用于多组值

使用np.fft.fft2和cv2.dft重现相位谱.为什么结果并不相似呢?

如何在Polars中将列表中的新列添加到现有的数据帧中?