Python 列出X和Y坐标

Python 列出X和Y坐标,python,list,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和i

我有以下清单:

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循环更容易。有什么想法吗

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不是一个很好的变量名

我添加了一种在每个列表中获得唯一点的方法。。。但我不完全确定这就是你想要的

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
我认为这是可行的,假设filedata是一个2d列表,尽管filedata不是一个很好的变量名


我添加了一种在每个列表中获得唯一点的方法。。。不完全确定这就是你想要的,尽管OP似乎只想要X和Y的列表。他可以这样做:

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
xs=zip(*filedata)[1]
ys=zip(*filedata)[2]

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

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


filedata是列表或其他内容的列表?filedata是列表或其他内容的列表?+1用于将集合部分添加到其中。。。假设他只想要列表中唯一的点,并且列表顺序并不重要。。。回想一下set0100==set100,0@JoranBeasley说得好。对我来说0100!=100,0. 但我更喜欢为X和Y使用不同的列表。@jpcgandre如果您只想要唯一的结果,但在列表格式和排序中,您可以使用listsortedsetXsnot按值排序。。。但按原始列表I中的顺序排序think@JoranBeasley在这种情况下,您的答案是+1,用于将集合部分添加到其中。。。假设他只想要列表中唯一的点,并且列表顺序并不重要。。。回想一下set0100==set100,0@JoranBeasley说得好。对我来说0100!=100,0. 但我更喜欢为X和Y使用不同的列表。@jpcgandre如果您只想要唯一的结果,但在列表格式和排序中,您可以使用listsortedsetXsnot按值排序。。。但按原始列表I中的顺序排序think@JoranBeasley在这种情况下,你的答案是一个为了得到一个X的列表,我可以使用:X=positions[0:]?为了得到一个X的列表,我可以使用:X=positions[0:]?是的,但是一个只有不同的X,Y的列表,这比得到所有的X,并且只使用xs和ys更昂贵。。。我去掉了我的消极Votes因为这确实回答了问题。。但这不是一个有效的方法solution@JoranBeasley你说得对。这是两倍的昂贵,我奇怪地忽略了它。是的,但是一个只有不同的X,Y的列表比得到所有的X和Y更昂贵,而且只使用X和Y。。。我去掉了我的消极Votes因为这确实回答了问题。。但这不是一个有效的方法solution@JoranBeasley你说得对。这是两倍贵,我奇怪地忽略了它。