晚上好,
我正在處理這段代碼:
Alright = []
for i in range(0, 384, 48):
Alright.append(i)
Alright2 = []
Alright3 = []
for j in range(len(Alright)):
if j % 2 == 0:
Alright2 = (Alright[j], Alright[j 1])
Alright3.append(Alright2)
print(Alright3)
Out : [(0, 48), (96, 144), (192, 240), (288, 336)]
很好,我想要那些范圍。現在我想做的是同樣的事情,但是對于不在過去的范圍(Alright3)并獲得一個不在Alright3中的范圍的串列,所以輸出必須像下一步中顯示的那樣(Wanted Out) . 這是我的代碼:
Alright4 = []
for i in range(49, 384, 46):
Alright4.append(i)
Alright5 = []
Alright6 = []
for j in range(len(Alright4)):
if j % 2 == 0:
Alright5 = (Alright4[j], Alright4[j 1])
Alright6.append(Alright5)
print(Alright6)
Out : [(49, 95), (141, 187), (233, 279), (325, 371)]
我想把這個拿出來:
Wanted Out : [(49, 95), (145, 191), (241, 287), (337, 384)]
謝謝你們的時間!
uj5u.com熱心網友回復:
我認為運行一個新回圈會有點過于復雜。只需嘗試調整您的第一種方法,如下所示:
Alright = []
for i in range(0, 384, 48):
Alright.append(i)
Alright2 = []
Alright3 = []
Alright4 = [] #numbers not in Alright3
last = None #saves the higher value of the last added tuple
for j in range(len(Alright)):
if j % 2 == 0:
if last != None: #made to skip the first iteration
Alright4.append((last 1, Alright[j]-1)) #saves the range between the last added tuple and the one being added in this iteration
Alright2 = (Alright[j], Alright[j 1])
Alright3.append(Alright2)
last = Alright[j 1] #saves the higher value of the last added tuple
if last != 384:
Alright4.append((last 1, 384))
print(Alright4)
Alright4 的內容將如下所示:
Out : [(49, 95), (145, 191), (241, 287), (337, 384)]
uj5u.com熱心網友回復:
Alright4 = []
mul = 4
for i in range(49, 384, 46):
Alright4.append(i)
print(Alright4)
Alright5 = []
Alright6 = []
for j in range(len(Alright4)):
if j % 2 == 0:
if j == 0:
Alright5 = (Alright4[j], Alright4[j 1])
Alright6.append(Alright5)
else:
if j == len(Alright4)-2:
mul = 1
Alright5 = (Alright4[j] mul, Alright4[j 1] mul)
Alright6.append(Alright5)
mul = 4
print(Alright6)
uj5u.com熱心網友回復:
首先,讓我們稍微重構一下您的初始代碼:
Alright = list(range(0, 384, 48))
Alright3 = []
for j in range(0, len(Alright), 2):
Alright2 = (Alright[j], Alright[j 1])
Alright3.append(Alright2)
現在我明白你想要做什么了。我會這樣寫:
ranges = [(i, i 48) for i in range(0, 384, 48 * 2)]
所以因為我們無論如何都要跳過所有其他條目,為什么不將原始范圍設定為兩倍大呢?我們還知道每個元組的第二個值必須比該元組的第一個值大 48。
這樣做的好處是我們可以使用相同的方法來找到補碼:
other_ranges = [(i, i 46) for i in range(49, 384, 48 * 2)]
注意步驟是一樣的,但是每個元組的第二個元素只比第一個多 46 個。
唯一的問題是最后一個值是 383 而不是您指定的 384。我相信這可能是正確的值,但如果你真的需要 384,之后可以更正:
first_value, second_value = other_ranges[-1]
other_ranges[-1] = first_value, second_value 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/439088.html
上一篇:如何在Python中接受來自int轉換的字串字母輸入?
下一篇:使用PyQt5播放音頻
