I have two list A
and B
. I have to print those elements index number(index number+1) of list A
,which elements also exist in list B
. For Every elements of B
list will print in new line.
Len(B) <=100
A = [['a'], ['a'], ['b'], ['a'], ['b']]
B = [['a'], ['b']]
I have done so far:
for i,x in enumerate(A):
if B[0] == x:
print(i+1,end=" ")
My output:
1 2 4
Expected Output:
1 2 4
3 5
How can i fix this?
You could make a outer loop that iterates over the elements of B
you have 2D arrays, (matrixes/ array of arrays), is that what you meant?
a list would be:
A = [‘a’, ‘b’]
and you have (array of arrays)
A = [[‘a’], [‘b’]]
do you see the difference?
and then you can loop thorough A and just check “if A[i] in B”.
does this make sense?
Can you please , give an example?
Did you mean this:
A = ['a', 'a', 'b', 'a', 'b']
B = ['a', 'b']
for i in (A):
if i in B:
print(A.index(i)+1,end=" ")
But Output is:
1 1 3 1 3
I need ,
1 2 4
3 5
Every time it catches first 'a'
element of list A 
ok, i see. so it is just an array and not an array of arrays. good. so now it looks like you need to keep track of the position of the elements from B in A. First you need to keep track of things you find, so create C which will actually be an array of arrays. For each element in B you will create row in C and add every index from A to that row. so in the end your matrix C will look like:
[[1], [2], [4]]
[[3], [5]]
Also suggest to reverse the logic and start going through B first. While going through the first element in B, go through every element in A and if B[i] == A[j] add a new element in C[i].
how is that? I’m trying to describe the logic instead of writing code for you, but i can do that as well, if you prefer.
1 Like
I understand,but cannot apply logic in code.Can you please give the code,then i will try to understand what’s going on 
there are multiple approaches obviously, it all depends on the sophistication of loops and python in general. here’s a simple and elegant solution i ended up with
a = ['a', 'a', 'b', 'a', 'b']
b = ['a', 'b']
for index_b, item_b in enumerate(b):
for index_a, item_a in enumerate(a):
if item_b == item_a:
print(index_a + 1, end=" ")
print('')
you don’t have to use ‘enumerate’ if you are not familiar. you can as easily use ‘for (var i = 0; i < b.length; i++):’ . I also didn’t use any C array to save things and just printed out the result. if you need to use the result later, you need to save it somewhere.
1 Like