我正在尝试创建一个嵌套在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']
答案 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