Python 3.x 从两个列表中找出最大值,对照另一个列表中的对应值进行检查,分配它,然后对第二大值执行相同操作,以此类推
我有两份清单:Python 3.x 从两个列表中找出最大值,对照另一个列表中的对应值进行检查,分配它,然后对第二大值执行相同操作,以此类推,python-3.x,list,max,Python 3.x,List,Max,我有两份清单: a = [3, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0] b = [2, 2, 3, 3, 0, 0, 0, 0, 0, 0, 0] 我想找到两个列表中的最大值,并将其与另一个列表中的对应值(相同索引)进行比较。例如,如果最大值在列表a中,而列表b中的对应值较小,则我需要将最大值的索引分配给该列表的主列表: a_master = [] b_master = [] 如果其对应项等于最大值,则不执行任何操作并对下一个最大值重复该过程,但忽略已分配给主列表的索引。
a = [3, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0]
b = [2, 2, 3, 3, 0, 0, 0, 0, 0, 0, 0]
我想找到两个列表中的最大值,并将其与另一个列表中的对应值(相同索引)进行比较。例如,如果最大值在列表a中,而列表b中的对应值较小,则我需要将最大值的索引分配给该列表的主列表:
a_master = []
b_master = []
如果其对应项等于最大值,则不执行任何操作并对下一个最大值重复该过程,但忽略已分配给主列表的索引。
所以在这个例子中,初始最大值是3,a[0]>b[0]意味着我们将索引0附加到a_主列表中。接下来,我们看到b[2]>a[2],因此我们将索引2附加到b_主列表中。a[3]=b[3],所以我们不分配任何东西
现在对下一个最大值重复此过程:2。[2]=2,但索引2已分配,因此应忽略。b[0]=2,但也已分配。b[1]=2>a[1],因此索引1被分配给b_主机
由于所有剩余值都与对应值相等,因此我们完成了,生成的主列表如下:
a_master = [0]
b_master = [2, 1]
最伟大的蟒蛇答案 如何将
a
预先排序为(索引,元素)
的元组对,并将其与第二个列表进行比较:
from operator import itemgetter
a = [3, 1, 2, 3, 0, 0, 0, 0, 0, 0, 0]
b = [2, 2, 3, 3, 0, 0, 0, 0, 0, 0, 0]
sorted_a = sorted(enumerate(a), key=itemgetter(1), reverse=True)
# [(0, 3), (3, 3), (2, 2), (1, 1), (4, 0), (5, 0), (6, 0), (7, 0), (8, 0), (9, 0), (10, 0)]
a_master = []
b_master = []
for i, x in sorted_a:
if x > b[i]:
a_master.append(i)
elif x < b[i]:
b_master.append(i)
print(a_master)
print(b_master)
谢谢,对我有用。它形成了我的问题的核心,我现在能够扩展它。
[0]
[2, 1]