如何在python中的两个不同列表中检查相同的位置

时间:2015-11-16 01:49:42

标签: python list position

我是python的新手。

我有两个不同的列表

#include <stdio.h>
// *********************************************************
// Implementation file PQ.cpp for the ADT priority queue.
// A heap represents the priority queue.
// *********************************************************
#include "PQ.h"    // header file for priority queue

bool pqClass::PQueueIsEmpty() const
{
    return H.HeapIsEmpty();
}  // end PQueueIsEmpty

 void pqClass::PQueueInsert(const pqItemType& NewItem,
                       bool& Success)
{
   H.HeapInsert(NewItem, Success);
}  // end PQueueInsert

void pqClass::PQueueDelete(pqItemType& PriorityItem,
                       bool& Success)
{
   H.HeapDelete(PriorityItem, Success);
}  // end PQueueDelete

 pqItemType pqClass::peek() const throw(PrecondViolatedExcep) {
   try
 {
    return H.peekTop();
 }
   catch (PrecondViolatedExcep e) {
       throw PrecondViolatedExcep("Attempted peek into an empty   priority       queue."); } // end try/catch
} // end peek
// End of implementation file.

在列表A中,它在第5位和第5位具有值。所以我想得到位置5和5的相应值(3和0)。列表B中的6。

那么请你就此提出一些建议。

提前致谢。

4 个答案:

答案 0 :(得分:1)

使用enumerate和list_comprehension。

>>> A = [0,0,0,0,0,20,40,0]
>>> B = [0,0,0,0,0,3,0,0]
>>> [B[i] for i,j in enumerate(A) if j != 0]
[3, 0]
>>> [B[i] for i,j in enumerate(A) if j]
[3, 0]

答案 1 :(得分:0)

只需遍历列表并检查非零值。

A = [0,0,0,0,0,20,40,0]  
B = [0,0,0,0,0,3,0,0]
j = 0
for item in A:
    if item != 0:
        temp = B[j]
        print(temp)
        j = j+1
    else:
        j = j+1

输出:

3 0

答案 2 :(得分:0)

列表推导的解决方案很好,但对于初学者来说很难阅读。使用j迭代器的解决方案很好,但您可以使用内置的enumerate()函数执行相同的操作。

A = [0,0,0,0,0,20,40,0]    
B = [0,0,0,0,0,3,0,0]

for index, val in enumerate(A):
    if val != 0:
        temp = B[index]
        print(temp)

输出30

答案 3 :(得分:0)

>>> A = [0,0,0,0,0,20,40,0]  
>>> B = [0,0,0,0,0,3,0,0]
>>> [j for i, j in zip(A, B) if i]
[3, 0]