Home > Mobile >  Python: Comparing values in two lists
Python: Comparing values in two lists

Time:02-18

I've really tried looking all over for solutions to my problem but haven't been successful in finding anything. If someone else has already asked this question, I apologize. Onto the problem.

I have two lists in with values to be compared to each other. I have tried the following option.

list1 = [1,3,5,7,9]
list2 = [200,2]
x = 0
n = 0
y = 0

while x <= 9:
    if list1[y] >= list2[n]:
        print('TRUE')
        x = x   1
        y = y   1
        if y > 4:
            y = 0
            n = n   1
    else:
        print('FALSE')
        x = x   1
        y = y   1
        if y > 4:
            y = 0
            n = n   1

The only problem is, instead of the variables in place, I need to iterate through a list of values.

So instead, I would like the code to look something like this:

x = 0
n = [0,1]
y = [0,3]
z = len(n)   len(y) - 1

while x <= z:
    if list1[y] >= list2[n]:
        print('TRUE')
        x = x   1

    else:
        print('FALSE')
        x = x   1

Where n and y are index values of the numbers that I want to compare.

This does not work for me and I'm really not sure how else to do this.

Edit: I didn't think I had to explain everything by text since I included two sets of code. The first set of code works and it shows exactly what I am trying to do. The second is what I want it to do.

Broken down further I want to know if list1[0]>=list2[0], followed by list1[3]>=list2[0], followed by list1[0]>=list2[1], followed by list1[3]>=list2[1]. The outputs that I expect are in the code I provided.

Apologies if I wasn't clear before. I need to call specific index positions that I will have in a separate list. This is the problem that I tried to outline in the second code.

CodePudding user response:

I think now get what you are trying to do.
First, there are two lists of "raw" data:

list1 = [1,3,5,7,9]
list2 = [200,2]

Then, there are two sets of "indices of interest":

y = [0, 3] # indices of interest for list1
n = [0, 1] # indices of interest for list2

I think the following can achieve what you want:

product = [(index1, index2) for index2 in n for index1 in y] #cartesian product 
for index1, index2 in product:
    if list1[index1] >= list2[index2]:
        print("True")
    else:
        print("False")

Or if the cartesian product is not wanted, simply do it within nested loops:

for index2 in n: 
    for index1 in y:
        if list1[index1] >= list2[index2]:
            print("True")
        else:
            print("False")
  • Related