我有一个包含3列x,y,z坐标的csv文件,即这种格式:
我使用下面的代码来导入它并处理其数据:
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) )
我要实现的是过滤列表,以便如果元组中的第三个元素(即z坐标)大于0,则将该条目(3个元素的元组)包括在列表中,否则0,然后不包括它。最好的方法是什么?
答案 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)]