满足条件后,使用更改的参数继续迭代

2024-06-26 00:01:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要在循环外更改参数,并在满足特定条件后继续迭代

例如,我有比萨饼列表和字符串列表。我有满足条件后应切换的酱包清单。 若字符串中存在条件“sauce_error”,我需要从sauce pack列表切换到另一个sauce pack,并使用下一个sauce pack继续迭代

#list of sauce packs
saucePacks = ['sauce_pack1', 'sauce_pack2', 'sauce_pack3', 'sauce_pack4']
index = 0
saucePack = saucePacks[index]

#list of pizzas
pizzas = ['pizza1', 'pizza2', 'pizza3_sauce_error', 'pizza4', 'pizza5']

#iterating over strings
for pizza in pizzas:  
  if 'sauce_error' in pizza:
    index = index+1 #need to switch sauce pack if substring in string
    print(saucePack, pizza)
  else:
    print(saucePack, pizza)

当“pizza”字符串中出现“sauce_错误”时,应将酱汁包切换到下一个from列表

期望输出:

sauce_pack1 pizza1
sauce_pack1 pizza2
sauce_pack2 pizza3_sauce_error
sauce_pack2 pizza4
sauce_pack2 pizza5

Tags: of字符串in列表indexerrorpacklist
3条回答

您只是忘了用新索引更新您的锅包:

#list of sauce packs
saucePacks = ['sauce_pack1', 'sauce_pack2', 'sauce_pack3', 'sauce_pack4']
index = 0
saucePack = saucePacks[index]

#list of pizzas
pizzas = ['pizza1', 'pizza2', 'pizza3_sauce_error', 'pizza4', 'pizza5']

#iterating over strings
for pizza in pizzas:  
    if 'sauce_error' in pizza:
        index = index+1 #need to switch sauce pack if substring in string
        saucePack = saucePacks[index]
        print(saucePack, pizza)
    else:
        print(saucePack, pizza)

与其更新索引并根据索引获取新元素,不如使用iteraor更像是Pythonic:

#list of sauce packs
saucePacks = iter(['sauce_pack1', 'sauce_pack2', 'sauce_pack3', 'sauce_pack4'])
saucePack = next(saucePacks)

#list of pizzas
pizzas = ['pizza1', 'pizza2', 'pizza3_sauce_error', 'pizza4', 'pizza5']

#iterating over strings
for pizza in pizzas:  
    if 'sauce_error' in pizza:
        saucePack = next(saucePacks)  # takes the next sauce from the list
    print(saucePack, pizza)

请注意,当迭代器耗尽时,您需要小心(您还需要使用索引,以防它超过列表的大小…)

Tobias p.G.有正确的答案,但是,我做了一些补充。如果对您有意义,请使用代码

#list of sauce packs
saucePacks = ['sauce_pack1', 'sauce_pack2', 'sauce_pack3', 'sauce_pack4']
index = 0

#list of pizzas
pizzas = ['pizza1', 'pizza2', 'pizza3_sauce_error', 'pizza4', 'pizza5']

#iterating over strings
for pizza in pizzas:  
  if 'sauce_error' in pizza:
    index += 1 #need to switch sauce pack if substring in string
    print(saucePacks[index], pizza)
  else:
    print(saucePacks[index], pizza)

相关问题 更多 >