为了账号安全,请及时绑定邮箱和手机立即绑定

Python - 循环遍历多个列表的所有实例

Python - 循环遍历多个列表的所有实例

潇湘沐 2021-07-29 18:33:15
有没有更好的方法来循环 Python 中多个列表的每个组合?例如...list1 = [1,2,3,4]list2 = [6,7,8]for i in list1:   for j in list2:      print(str(i) + ", " + str(j))1, 61, 71, 82, 62, 72, 83, 63, 73, 84, 64, 74, 8我问是因为我想在找到一个值后跳出两个循环。我不想使用 bool 标志来跳出顶级循环。到目前为止我看到的所有答案都说使用 zip,但这不是一回事。zip 将产生以下内容。1, 62, 73, 8如果你使用地图,你会得到以下,这也不是我要找的。1, 62, 73, 84, None
查看完整描述

4 回答

?
喵喔喔

TA贡献1735条经验 获得超5个赞

你可以itertools.product像这样使用:


list1 = [1,2,3,4]

list2 = [6,7,8]

find_this_value = (1, 8)


found_value = False

for permutation in itertools.product(list1, list2):

    if permutation == find_this_value:

        found_value = True

        break


if found_value:

    pass  # Take action

itertools.product返回一个生成器,其中包含 2 个列表的所有可能排列。然后,您只需迭代这些,并搜索直到找到您想要的值。


查看完整回答
反对 回复 2021-08-03
?
慕沐林林

TA贡献2016条经验 获得超9个赞

您是否尝试过使用列表理解

[(x, y) for x in [1,2,3,4] 
for y in [6,7,8]]


查看完整回答
反对 回复 2021-08-03
?
忽然笑

TA贡献1806条经验 获得超5个赞

如果您不想itertools.product按照另一个答案中的建议使用,您可以将其包装在一个函数中并返回:


list1 = [1,2,3,4]

list2 = [6,7,8]


def findNumbers(x, y):

    for i in list1:

       for j in list2:

          print(str(i) + ", " + str(j))

          if (x, y) == (i, j):

              return (x, y)

输出:


>>> findNumbers(2, 7)

1, 6

1, 7

1, 8

2, 6

2, 7

(2, 7)


查看完整回答
反对 回复 2021-08-03
  • 4 回答
  • 0 关注
  • 219 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号