2 回答

TA貢獻1946條經(jīng)驗 獲得超4個贊
我認(rèn)為一個簡潔的方法是這樣做
zipped = zip(list1, list2[n:])
where 是表示偏移量的整數(shù)。n

TA貢獻1864條經(jīng)驗 獲得超6個贊
最終,我得到了以下通用函數(shù):
def zip_shift(s1, s2, shift, placeholder):
i1 = iter(s1)
i2 = iter(s2)
while shift > 0:
yield placeholder, next(i2) # leave only next(i2) if no placeholder pairs are needed
shift -= 1
yield from zip(i1, i2) # or return zip
上述函數(shù)的工作方式類似于生成器,它首先填充值時間,而不是從第二個序列中獲取值。之后,它就像.這是一個相對較新的結(jié)構(gòu)(自Python 3.3以來)。上述收益率和回報率之間存在細微差異,但在這種情況下可以忽略不計。placeholdershifts2zipyield from
當(dāng)然,如果值幾乎為1(帶有占位符的對除外),則可以通過以下方式實現(xiàn)相同的值:shift
zip(s1, next(s2))
與序列一樣,不必具有相同的長度。只要較短的序列未耗盡,生成器就會工作。zip
添加回答
舉報