我有一个名为runlist
的非常大的列表,其中包含多个子列表。 runlist
的格式为[[ ], [ ], [ ], ...]
,其中每个条目都是这样的:
print runlist[1]
[['632', '143', '11'], ['633', '143', '9'], ['422', '144', '5'], ['628', '144', '8'], ['629', '144', '12'], ['630', '144', '12'], ['631', '144', '10'], ['632', '144', '9'], ['633', '144', '6'], ['629', '145', '8'], ['630', '145', '8'], ['631', '145', '8'], ['632', '145', '8'], ['632', '146', '5']]
但每个条目都有不同的数字。我想让我的代码找到所有runlist[i]
个条目,其中子列表的第一个条目(如果你愿意,x坐标)必须只在一定范围内。但是我有多个不同的数字范围,每个范围必须匹配runlist[i]
列表中的至少一个x坐标。换句话说,我想检查每个runlist[i]
在任何x条目(runlist[i][j][0]
)中是否有一个介于600-649之间的数字,并且至少有一个数字介于400-449之间其他runlist[i][j][0]
。这适用于i
,但任何j
。然后,我想将所有匹配的runlist[i]
列表保存在名为goodrunslist
的新列表中。
这是我尝试过的内容,但它最后给我goodrunslist
作为一个空列表 - 可能是因为它试图匹配每个runlist[i][j][0]
的数字范围,而不是任何一个。我该怎么做才能解决这个问题?谢谢!
import re
goodrunslist = []
for i in range(len(runlist)):
for j in range (0, len(runlist[i])):
if re.match('[4][0-4][0-9]', runlist[i][j][0]) and re.match('[6][0-4][0-9]', runlist[i][j][0]):
goodrunslist.append(runlist[i])
更新:我现在尝试使用以下代码,我认为这样可行,但我仍然得到一个空列表。
for i in range(len(runlist)):
for j in range (0, len(runlist[i])):
if re.match('[6][0-4][0-9]', runlist[i][j][0]):
ch1 = True
else:
ch1 = False
for k in range (0, len(runlist[i])):
if re.match('[4][0-4][0-9]', runlist[i][k][0]):
ch2 = True
else:
ch2 = False
if ch1 and ch2:
goodrunslist.append(runlist[i])