python双循环zip_Python如何同时进行两个循环
想寫這樣一個邏輯
for i in lit:
for j in lit:
do_something(i, j)
但是感覺這樣寫好丑,有沒有比較優(yōu)美的寫法?
用
itertools
的笛卡爾積
from itertools import product
for i, j in product(lit, lit):
do_something(i, j)
product
返回一個生成器,能
yield
出傳入數(shù)組形成的笛卡爾積。
product
可以接受任意多個數(shù)組。
我來補上一刀:
# 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
接收一個可迭代的對象, 返回一個生成器, 能輸出接收迭代對象所有迭代元素可能的笛卡爾積
本質(zhì)上還是雙重循環(huán), 但是自我感覺良好, 可復用
代碼輸出:
('h', 'h')
('h', 'e')
('h', 'y')
('h', '!')
('e', 'h')
('e', 'e')
('e', 'y')
('e', '!')
('y', 'h')
('y', 'e')
('y', 'y')
('y', '!')
('!', 'h')
('!', 'e')
('!', 'y')
('!', '!')
最近刷了一道leetcode的題目【two sum】,感覺思路很好哇,也和循環(huán)有關(guān)系。
Giver numers=[2, 7, 11, 15],target=9, because 2+7=9, then return indexs [0,1].
剛開始,想用2重循環(huán)做的,發(fā)現(xiàn)時間超時(時間復雜度太高)
然后想一下1重循環(huán)也可以搞定的,每次記錄下你得到的信息(使用map了),減小了時間復雜度。
最好不要用2重循環(huán),感覺好浪費時間哦~
izip 不行?
與50位技術(shù)專家面對面20年技術(shù)見證,附贈技術(shù)全景圖總結(jié)
以上是生活随笔為你收集整理的python双循环zip_Python如何同时进行两个循环的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: strstr函数_【每日编程176期】实
- 下一篇: python分配buffer_Node.