制作X和Y坐标列表

时间:2013-04-24 16:48:03

标签: python list

我有以下列表:

Filedata:
[1, 0, 0, 0]
[2, 0, 0, 100]
[3, 0, 0, 200]
[4, 100, 0, 0]
[5, 100, 0, 100]
[6, 100, 0, 200]
...

其中第一列是ID,第二列是X坐标,第三列是Y坐标,第四列是Z坐标。

我想在原始列表中制作两个不同的X和Y坐标列表:

X:
[0, 100, ...]
Y:
[0, 100, ...]

要做到这一点,我想到了一个代码,但在这个过程中我意识到必须有一个更容易的原因,而不是做多个for和if循环。有什么想法吗?

3 个答案:

答案 0 :(得分:4)

IDs,Xs,Ys,Zs = zip(*filedata)
positions = zip(Xs,Ys,Zs) # list of tuples of (x,y,z) 

unique_Xs = []
[unique_Xs.append(val) for val in Xs if val not in unique_Xs]

unique_Ys = []
[unique_Ys.append(val) for val in Ys if val not in unique_Ys]

我认为可行,假设filedata是一个2d列表,虽然filedata不是一个很好的变量名...

我添加了一种方法来获得每个列表中的唯一点...不完全确定你想要的是什么

答案 1 :(得分:2)

filedata = [
    [1, 0, 0, 0],
    [2, 0, 0, 100],
    [3, 0, 0, 200],
    [4, 100, 0, 0],
    [5, 100, 0, 100],
    [6, 100, 0, 200],
]

IDs, Xs, Ys, Zs = zip(*filedata)
Xs, Ys, Zs = set(Xs), set(Ys), set(Zs)
print 'X:', Xs
print 'Y:', Ys
print 'Z:', Zs

答案 2 :(得分:0)

似乎OP只需要X和Y的列表。他可以这样做:

xs=zip(*filedata)[1]
ys=zip(*filedata)[2]