可变大小的数组匹配

时间:2015-08-02 10:00:42

标签: python arrays list python-3.x

我有一个基于第一列

排序的数据文件
1 3 2
3 6
4 8 5 6 2
4 9
5 2 2

有一个键有三个项目,比如seen = [4 8 5],我想在上面的数组中搜索。由于某些行少于三列,以下代码无法比较,我知道

take = [row for row in lines if row[0] == seen[0] and row[1] == seen[1] and row[2] == seen[2]]

那么我应该为少于三列的行做些什么呢?

2 个答案:

答案 0 :(得分:3)

使用切片,您无需手动检查所有3个项目并检查长度:

take = [row for row in lines if row[:3] == seen]

答案 1 :(得分:1)

添加一名警卫(len(row) >= 3):

take = [row for row in lines if len(row) >= 3 and row[0] == seen[0] and row[1] == seen[1] and row[2] == seen[2]]

如果行没有足够的元素,这将使检查短路(并失败)