Python Forum
Comparing values in separate lists - Printable Version

+- Python Forum (https://python-forum.io)
+-- Forum: Python Coding (https://python-forum.io/forum-7.html)
+--- Forum: General Coding Help (https://python-forum.io/forum-8.html)
+--- Thread: Comparing values in separate lists (/thread-9876.html)



Comparing values in separate lists - KaleBosRatjes - May-02-2018

I'm having problems with my code, i want to compare 2 values from a list. There are 4 groups (a,b,c,d) where the values can end up in. A if both values are above 5, b and c if one of the two is above 5 and d if both are below 5. The problem is that the first value will compare with all the values from list 2. I also tried to get the values in tuples but it didn't work?
I'll post my code below.

lists:
[12.4, 2.7, 5.1] [10.9, 2.3, 3.7]

I tried it with using a nestled for loop but it uses all the values from list 1 in 2.
my code:
for i in p1stb_list_new:
    for j in p2stb_list_new:
        if i>=5 and j>=5:
            a.extend((i,j))
        elif i<5 and j>=5:
            b.extend((i,j))
        elif i>=5 and j<5:
            c.extend((i,j))
        elif i<5 and j<5:
            d.extend((i,j))
print(a,b,c,d)
output:
[12.4, 10.9, 5.1, 10.9] [2.7, 10.9] [12.4, 2.3, 12.4, 3.7, 5.1, 2.3, 5.1, 3.7] [2.7, 2.3, 2.7, 3.7]

desired output:
[(12.4,10.9)][][(5.1,2.3)][(2.7,3.7)]


RE: Comparing values in separate lists - ThiefOfTime - May-02-2018

I would suggest to use the zip function in combination with a for loop if you want to compare the first elements, then the second elements, etc.
so instead of you two for loops use:
list_1 = [12.4, 2.7, 5.1]
list_2 = [10.9, 2.3, 3.7]
for element_1, element_2 in zip(list_1, list_2):
       if element_1>=5 and element_2>=5:
            a.extend((element_1,element_2))
        elif element_1<5 and element_2>=5:
            b.extend((element_1,element_2))
        elif element_1>=5 and element_2<5:
            c.extend((element_1,element_2))
        elif element_1<5 and element_2<5:
            d.extend((element_1,element_2))
print(a, b, c, d)



RE: Comparing values in separate lists - woooee - May-02-2018

If you want to compare items in the same position/offset in each list, then you use the offset to step through. And using i, l, or O as single digit variable names can sometimes look like numbers.
if len(p1stb_list_new) == len(p2stb_list_new):
    for offset in range(len(p1stb_list_new)):
        ## shorter names are easier to key in
        p1=p1stb_list_new[offset]
        p2=p2stb_list_new[offset]
        print(offset, p1, p2)

        if p1>=5 and p2>=5:
            a.extend((p1,p1))
        elif p1<5 and p1>=5:
            b.extend((p1. p2))
        elif p1>=5 and p2<5:
            c.extend((p1, p2))
        elif p1<5 and p2<5:
            d.extend((p1,p2))  



RE: Comparing values in separate lists - KaleBosRatjes - May-02-2018

Thank you sooo much guys! This helped me so much :)
I'm new to programming so sometimes its just not working out :P