回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>所以基本上我有10个列表:5个速率列表和5个开发列表。它们组合成5个列表。名单如下:</p>
<pre><code>rate1 = [16,16,16,0,0,0,0,0,16,16,0,0,0,0,0,0,12,23,34,45,56,67,545,23,34,45,56]
rate2 = [6,6,15,5,5,5,5,5,8,7,7,7,7,7,6,6,2,23,324,415,56,67,545,23,34,48,6]
rate3 = [5,4,3,2,2,0,0,0,8,8,8,8,6,6,6,5,122,23,34,41,5216,67,545,23,34,25,533]
rate4 = [6,5,2,0,0,0,0,0,9,9,9,7,6,6,5,5,1232,23,34,45,56,67,545,23,34,44,38]
rate5 = [0,0,0,0,0,0,0,0,10,9,8,7,6,6,6,2,124,243,324,457,562,7,545,33,64,45,56]
dev1 = [7,2,10,-8,-1,-5,-4,-26,12,7,-14,-21,-16,-15,-19,-20,124,24,34,457,562,7,545,33,64,45,56]
dev2 = [26,19,22,18,17,8,14,26,15,21,29,49,53,30,48,37, 1124,243,24,77,562,7,545,33,64,45,56]
dev3 = [53,54,40,36,57,-8,-1,-5,49,53,48,37,44,90,45,88, 154,213,34,87,572,7,545,33,64,45,56]
dev4 = [53,54,57,-8,-1,-5,-4,-26,49,53,48,90,88,55,61,53, 4,241,374,457,52,7,545,33,64,45,56]
dev5 = [-8,-1,-5,-4,-26,-25,-16,0,90,88,61,79,63,88,82,92, 14,26,324,457,562,7,545,33,64,45,56]
</code></pre>
<p>因此,我只编写了一个程序,将rate1与dev1和其余部分结合起来。在我将他们分成5组后,如下所示:</p>
<pre><code>price1 = list(zip(rate1, dev1))
price2 = list(zip(rate2, dev2))
price3 = list(zip(rate3, dev3))
price4 = list(zip(rate4, dev4))
price5 = list(zip(rate5, dev5))
n=5
a = [price1[i:i + n] for i in range(0, len(price1), n)]
b = [price2[i:i + n] for i in range(0, len(price2), n)]
c = [price3[i:i + n] for i in range(0, len(price3), n)]
d = [price4[i:i + n] for i in range(0, len(price4), n)]
e = [price5[i:i + n] for i in range(0, len(price5), n)]
print(a)
print(b)
print(c)
print(d)
print(e)
</code></pre>
<p>这样做之后,我得到了5个2d列表,然后我想按降序对它们进行速率排序,得到每个速率列表的前4个速率,从每个速率列表的这4个值中,得到每组的4个最大值,并得到它们相应的dev值,因此我编写了这个程序:</p>
<pre><code>####Sorting the tuples of list rate wise####
newPrice1 = [sorted(block, reverse=True, key=lambda x: x[0])[:4] for block in a]
newPrice2 = [sorted(block, reverse=True, key=lambda x: x[0])[:4] for block in b]
newPrice3 = [sorted(block, reverse=True, key=lambda x: x[0])[:4] for block in c]
newPrice4 = [sorted(block, reverse=True, key=lambda x: x[0])[:4] for block in d]
newPrice5 = [sorted(block, reverse=True, key=lambda x: x[0])[:4] for block in e]
###Getting the max all the list and their coresponding Dev###
rv = []
dv = []
for i in range(0, len(newPrice1)-1):
rv.append([])
dv.append([])
for j in range(4):
m = max(newPrice1[i][j][0], newPrice2[i][j][0], newPrice3[i][j][0], newPrice4[i][j][0], newPrice5[i][j][0])
rv[-1].append(m)
if m == newPrice1[i][j][0]:
dv[-1].append(newPrice1[i][j][1])
elif m == newPrice2[i][j][0]:
dv[-1].append(newPrice3[i][j][1])
elif m == newPrice3[i][j][0]:
dv[-1].append(newPrice3[i][j][1])
elif m == newPrice4[i][j][0]:
dv[-1].append(newPrice4[i][j][1])
elif m == newPrice5[i][j][0]:
dv[-1].append(newPrice5[i][j][1])
print(newPrice1)
print(newPrice2)
print(newPrice3)
print(newPrice4)
print(newPrice5)
print(rv)
print(dv)
</code></pre>
<p>输出:</p>
<pre><code>newPrice1 = [[(16, 7), (16, 2), (16, 10), (0, -8)], [(16, 12), (16, 7), (0, -5), (0, -4)], [(0, -14), (0, -21), (0, -16), (0, -15)], [(45, 457), (34, 34), (23, 24), (12, 124)], [(545, 545), (67, 7), (56, 562), (34, 64)], [(56, 56), (45, 45)]]
newPrice2 = [[(15, 22), (6, 26), (6, 19), (5, 18)], [(8, 15), (7, 21), (5, 8), (5, 14)], [(7, 29), (7, 49), (7, 53), (7, 30)], [(415, 77), (324, 24), (23, 243), (6, 37)], [(545, 545), (67, 7), (56, 562), (34, 64)], [(48, 45), (6, 56)]]
newPrice3 = [[(5, 53), (4, 54), (3, 40), (2, 36)], [(8, 49), (8, 53), (0, -8), (0, -1)], [(8, 48), (8, 37), (6, 44), (6, 90)], [(122, 154), (41, 87), (34, 34), (23, 213)], [(5216, 572), (545, 545), (67, 7), (34, 64)], [(533, 56), (25, 45)]]
newPrice4 = [[(6, 53), (5, 54), (2, 57), (0, -8)], [(9, 49), (9, 53), (0, -5), (0, -4)], [(9, 48), (7, 90), (6, 88), (6, 55)], [(1232, 4), (45, 457), (34, 374), (23, 241)], [(545, 545), (67, 7), (56, 52), (34, 64)], [(44, 45), (38, 56)]]
newPrice5 = [[(0, -8), (0, -1), (0, -5), (0, -4)], [(10, 90), (9, 88), (0, -25), (0, -16)], [(8, 61), (7, 79), (6, 63), (6, 88)], [(457, 457), (324, 324), (243, 26), (124, 14)], [(562, 562), (545, 545), (64, 64), (33, 33)], [(56, 56), (45, 45)]]
Rate = [[16, 16, 16, 5], [16, 16, 5, 5], [9, 8, 7, 7], [1232, 324, 243, 124], [5216, 545, 67, 34]]
Dev = [[7, 2, 10, 36], [12, 7, -8, -1], [48, 37, 44, 90], [4, 87, 26, 14], [572, 545, 7, 64]]
</code></pre>
<p>因此,费率表实际上是不对的,因为如果你看到第一组新价格,你可以看到最大的数字是<strong>16</strong>,但在连续3次<strong>16</strong>,在**第4(第3个索引)**处有<strong>5</strong>,但实际上那里应该有<strong>15</strong>,它出现在^{<cd1>的第0个索引中. 这可能是因为我不是一次拿整个矩阵。预期产出为:</p>
<pre><code>Rate = [[16, 16, 16, 15], [16, 16, 10, 9], [9, 8, 8, 8], [1232, 457, 415, 324], [5216, 562, 545, 545]]
dev = [[7, 2, 10, 22], [12, 7, 90, 49], [48, 48, 61, 37], [4, 457, 77, 24], [572, 562, 545, 545]]
</code></pre>
<p>有人能在最后一部分帮助我们从任何方向获得最大值吗</p>