同じ長さのリストが2つあります:aとbです。リストbには、同じインデックスのリストaと同じ浮動小数点数がいくつか含まれますが、他のインデックスはゼロで置き換えられます。これらのリストには、それぞれ数千の値も含まれています。複数のリストを反復して比較する
これは、ゼロ以外の値になるまでリストbを繰り返していき、大きな値に達するまで同じインデックスからリストaを反復します。私はその後、大きな値を空のリストに追加して、リストbを次の非ゼロ値まで反復して繰り返していきたいと思います。
c=[]
i = 0
j = 0
while i < len(a):
if b[i] == 0:
i = i + 1
if b[i] > 0:
j = i
if a[j] < b[i]:
j = j + 1
if a[j] == b[i]:
j = j + 1
if a[j] > b[i]:
c.append(a[j])
i = i + 1
は私がのためにこれを行うための複数の方法を試してみましたし、ループはどちらかだけの空のリストにリストAの全体を追加終わるながら、またはループしながら、私は無限を作成するので、どのように任意のヘルプやアドバイス始めるには大いに感謝します!
これに@ MichaelButscherの答えを組み込み、リストaとbの値に対応する日付を含む別のリストdを追加すると、条件if a[j] > b[i]:
を満たす値の日付が新しいリストeに追加されました。
d=['05/01/2000','06/01/2000','07/01/2000','10/01/2000','11/01/2000','12/01/2000','23/10/2000','24/10/2000','25/10/2000','13/12/2000','14/12/2000','15/12/2000','20/02/2001','21/02/2001','21/09/2001','19/06/2002','20/06/2002']
a=[1.86,1.85,1.89,1.82,1.82,1.83,1.846,1.898,1.869,1.923,1.926,1.9677,1.959,2.02,2.802,2.7312,2.8035]
b=[0,0,1.89,0,0,0,0,0,0,0,0,1.9677,0,0,2.802,0,0]
c=[]
e=[]
i = 0
j = 0
# Run until break
while True:
while i < len(a):
if b[i] != 0:
break # break inner while
i += 1
else:
break # break outer while
# At this point: i < len(a) and b[i] != 0
j = i
while j < len(a):
if a[j] > b[i]:
# At this point: i < len(a) and b[i] != 0 and j < len(a) and a[j] > b[i]
c.append(a[j])
e.append(d[j])
break
j += 1
# At this point either appropriate j was found or j == len(a)
# Anyway, next i to check
i += 1
リストのCとEは、その後の列に印刷された:
24/10/2000 1.898
24/10/2000 1.898
21/02/2001 2.02
10/09/2001 2.606
20/06/2002 2.8035
24/09/2002 3.8132
22/09/2015 4.0667
04/09/2015 3.853
01/09/2015 3.7031
10/05/2004 3.148
データの一部が繰り返され、リストdの日付であったにもかかわらず、昇順日付順ではありません。
は、あなたがすでにやっていることと、特にうまくいかないものを表示します。 –
@MichaelButscher私は無限のwhileループで終わる試みられたコードでそれを更新しました。 –