python多重循环执行顺序_python中多重循环的写法

写法 :for i,j,k in product(range(32), range(32),range(32)):

参考:https://segmentfault.com/q/1010000006238665

Python如何同时进行两个循环

想写这样一个逻辑

for i in lit:

for j in lit:

do_something(i, j)

但是感觉这样写好丑,有没有比较优美的写法?

1、用 itertools 的笛卡尔积

from itertools import product

for i, j in product(lit, lit):

do_something(i, j)

product 返回一个生成器,能 yield 出传入数组形成的笛卡尔积。

product 可以接受任意多个数组。

2、我来补上一刀:

# coding=utf-8

def unique_pairs(n):

"""一个贱贱的生成器"""

for i in n:

for j in n:

yield i, j

lit = "hey!"

for i, j in unique_pairs(lit):

print(i, j)

unique_pairs接收一个可迭代的对象, 返回一个生成器, 能输出接收迭代对象所有迭代元素可能的笛卡尔积

本质上还是双重循环, 但是自我感觉良好, 可复用

代码输出:

('h', 'h')

('h', 'e')

('h', 'y')

('h', '!')

('e', 'h')

('e', 'e')

('e', 'y')

('e', '!')

('y', 'h')

('y', 'e')

('y', 'y')

('y', '!')

('!', 'h')

('!', 'e')

('!', 'y')

('!', '!')

3、最近刷了一道leetcode的题目【two sum】,感觉思路很好哇,也和循环有关系。

Giver numers=[2, 7, 11, 15],target=9, because 2+7=9, then return indexs [0,1].

刚开始,想用2重循环做的,发现时间超时(时间复杂度太高)

然后想一下1重循环也可以搞定的,每次记录下你得到的信息(使用map了),减小了时间复杂度。

最好不要用2重循环,感觉好浪费时间哦~

4、izip 不行?

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值