python嵌套反向循环

时间:2018-08-27 11:23:21

标签: python nested-loops

我正在尝试创建一个嵌套在for循环中的反向循环,一旦for循环满足特定条件,然后反向循环就会启动,以基于第二个一致的,我知道的标准。通常,将执行for循环以查找所需的信息。但是,我只知道准则,除了准则之前列出的信息外,我不知道所需的信息,它可以是三种不同格式之一。我正在使用Python 3.6。

编辑:看起来让我失望的是“我要寻找的东西”的不同格式。为了简化它,我们只使用一种特定的格式,我想要的信息可以与我不需要的信息分组。

searchList = [['apple'], ['a criterion for'], 
['what Im looking for'], ['a criterion for what Im looking for   not what Im looking for'], 
['fish'], ['coffee'], ['oil']]
saveInformation = []
for n in range(len(searchList)):
    if 'coffee' in searchList[n]:
        for x in range(n, 0, -1):
            if 'a criterion for' in searchList[x]:
                 #this part just takes out the stuff I don't want
                 saveInformation.append(searchList[x])
                 break
            else: 
                 # the reason for x+1 here is that if the above if statement is not met, 
                 #then the information I am looking for is in the next row. 
                 #For example indices 1 and 2 would cause this statement to execute if index 
                 #3 was not there
                 saveInformation.append(searchList[x+1])
                 break

预期产量

saveInforation = ['what Im looking for']

相反,我得到的输出是

saveInforation = ['oil']

3 个答案:

答案 0 :(得分:0)

昨天我回答了类似的问题,所以我将向您提供代码并解释如何实现。

  

首先,您需要一个已经有的列表,太好了!我们称之为wordlist。现在您需要一个代码来寻找它

for numbers in range(len(wordlist)):
    if wordlist[numbers][0] == 'the string im looking for':
        print(wordlist[numbers])

答案 1 :(得分:0)

您可以使用小列表理解来达到类似的效果:

search = ['apple', 'im looking for', 'coffee', 'fish']
results = [item for item in search
           if 'coffee' in search
           and item == 'im looking for']

这将执行您需要的检查,仅将您想要的项目添加到新列表中,甚至在您的标准项目存在的情况下。

您甚至可以添加更多项来进行搜索,例如:'

itemsWanted = ['im looking for', 'fish']

然后在列表理解中将if item == 'im looking for'替换为if item in itemsWanted

作为旁注,您可以通过在开始时执行if语句来减少执行的检查次数:

if 'coffee' in search: # criterion matched
    results = [i for i in search
               if i in itemsWanted]

答案 2 :(得分:0)

我认为最好不要嵌套for循环,而应将问题分解为不同的步骤。甚至最好为每个步骤创建一个单独的函数。

您的要求对我来说并不完全清楚,但是我认为这满足了您的需求:

YES