2

我想知道如何最好地将 x,y 坐标写入数组?

我也不知道数组会变成多大...

或者,是否有另一种更易于使用的数据结构?

谢谢你的帮助。

4

4 回答 4

2

您可以使用tuplelist类型:

my_coords = [(1, 2), (3, 4)]
my_coords.append((5, 6))
for x, y in my_coords:
    print(x**2 + y**2)

坐标的一些例子

单位圆内的点

my_coords = [(0.5, 0.5), (2, 2), (5, 5)]
result = []
for x, y in my_coords:
    if x**2 + y**2 <= 1:
        result.append((x, y))

生成一个圆圈

from math import sin, cos, radians
result = []
for i in range(360):
    x = cos(radians(i))
    y = -sin(radians(i))
    result.append((x, y))
于 2013-10-25T12:03:12.367 回答
2

一个元组对于简单的任务可能就足够了,但是您也可以Coordinate为此目的创建一个类。

class Coordinate(object):
    def __init__(self, x, y):
        self.x = x
        self.y = y

    def __repr__(self):
        return 'Coordinate({0.x:d}, {0.y:d})'.format(self)
>>> coord = Coordinate(0, 0)
Coordinate(0, 0)
>>> coord.x = 1
>>> coord.y = 2
>>> coord
Coordinate(1, 2)
>>> coord.x
1
>>> coord.y
2

笔记

Python 2.5 兼容性

使用以下__repr__方法:

def __repr__(self):
    return 'Coordinate(%d, %d)'.format(self)

浮点坐标

浮点坐标将按原样存储,但该__repr__方法会将它们四舍五入。只需替换:d:.2f(与 相同%),其中2是要显示的小数点数。

于 2013-10-25T12:38:37.633 回答
2

如果事先知道数据的大小,请使用 numpy 数组。

import numpy
arr = numpy.array([ [x,y] for x,y in get_coords() ])

如果您需要即时追加数据,请使用元组列表。

l = []
for x,y in get_coords():
    l.append((x,y))
于 2013-10-25T12:02:27.467 回答
2

您可以将包含 x,y 坐标的元组 (X,Y) 插入到列表中。

>>>l=[]
>>>coords = tuple([2,4])
>>>l.append(coords)
>>>l
[(2,3)]
于 2013-10-25T12:01:34.073 回答