Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/wcf/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 从两个列表中找出最大值,对照另一个列表中的对应值进行检查,分配它,然后对第二大值执行相同操作,以此类推_Python 3.x_List_Max - Fatal编程技术网

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]