在Python中按顺序运行列表

在Python中按顺序运行列表,python,regex,list,iteration,sequence,Python,Regex,List,Iteration,Sequence,我如何告诉python按顺序运行一个列表,运行相同的函数(在本例中搜索带有“rice”的包),如果没有找到带有rice的包,请再次从bag1开始搜索bag1-bigbag2中的每个包。我的例子是: import random bag1 = "bag of chips" bag2 = "bag of cookies" bag3 = "bag of cheetos" ricebag = "bag of rice" baglist = [bag1, bag2, bag3, ricebag] bigb

我如何告诉python按顺序运行一个列表,运行相同的函数(在本例中搜索带有“rice”的包),如果没有找到带有rice的包,请再次从
bag1
开始搜索bag1-bigbag2中的每个包。我的例子是:

import random
bag1 = "bag of chips"
bag2 = "bag of cookies"
bag3 = "bag of cheetos"
ricebag = "bag of rice"

baglist = [bag1, bag2, bag3, ricebag]
bigbag1 = random.choice(baglist)

bags =[bag1, bag2, bag3, bigbag1]
rice = False
while not rice:
    for bag in bags:
        if ' rice' in bag:
            print('rice found')
            rice = True
            break
print('yum')        

最终目标是继续按顺序搜索行李,直到
if
语句为真。在一个实际示例中,
bags
表示我正在解析的URL,
rice
是我在URL中搜索的关键字。url正在更改,因此最终,
rice
将上载到url,循环将中断。

我不确定是否理解您的问题,但这就是您反复循环许多列表的方式:

from itertools import chain, cycle

a = range(5)
b = range(10, 14)
c = range(100, 107)

for item in cycle(chain(a, b, c)):
    print item

这将无限循环,但您可以在循环中添加条件以最终打破它

random.choice[baglist]
=>
random.choice(baglist)
如果第一次没有找到,从一开始就重新开始搜索有什么意义?还是我误解了你想要做什么?@PaulRooney我只是做了这个例子来简化阅读,在我的情况下,包实际上是我想要监控的URL。我不想制作一个不同的脚本来查看url的xml中是否有“rice”,而是想把它全部放在一个脚本中。在URL中循环,直到我得到一个HIT。在这个脚本中有什么不起作用的吗?另外,如果没有找到“rice”,它不是一个无限循环吗?@bozdoz否,最终
bigbag1
bigbag2
将随机选择
ricebag
,这将使
if
语句为真,打破循环并打印
yum
。。。我只需要知道如何继续搜索袋子,直到if语句为真