消除缺少子列表匹配的列表条目?

时间:2018-02-21 00:52:35

标签: python regex list

我有一个名为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])

0 个答案:

没有答案