按特定轴过滤元组列表

时间:2019-09-20 18:27:54

标签: python python-3.x

我有一个包含3列x,y,z坐标的csv文件,即这种格式:

enter image description here

我使用下面的代码来导入它并处理其数据:

import csv
from operator import itemgetter

csvfile = open(r'C:\Users\%username%\Desktop\Deep-lizard\x_y_z coor.csv')

inFile = csv.reader(csvfile)
# skip header
inFile.__next__()

#Read and sort the vertices coordinates (sort by x and y)
vertices = sorted( [(float(r[0]), float(r[1]), float(r[2])) for r in inFile], key = itemgetter(0,1) )

这会将vertices变成一个元组列表: enter image description here

我要实现的是过滤列表,以便如果元组中的第三个元素(即z坐标)大于0,则将该条目(3个元素的元组)包括在列表中,否则0,然后不包括它。最好的方法是什么?

1 个答案:

答案 0 :(得分:1)

您可以在理解的末尾放置if语句以进行过滤。

In [1]: l = list(zip(range(10),range(0,20,2)))
   ...: l
   ...:
Out[1]:
[(0, 0),
 (1, 2),
 (2, 4),
 (3, 6),
 (4, 8),
 (5, 10),
 (6, 12),
 (7, 14),
 (8, 16),
 (9, 18)]

In [2]: [x for x in l if x[1]<13]
Out[2]: [(0, 0), (1, 2), (2, 4), (3, 6), (4, 8), (5, 10), (6, 12)]