Skip to content
Advertisement

If-Elif Statement is not working as I expected in python [closed]

I want to adjust lists to the same length but the if-elif statement is not working as I thought, its very weird. This might be something so obvious

Code:

l = [1,2,1,4,3,1]
l2 = [1,5,7,3,35,5,66,7]
lenl = len(l)
lenl2 = len(l2)
if l < l2:
    l_l2 = lenl - lenl2
    list1 = l2
    list2 = l
elif l > l2:
    l_l2 = lenl2 - lenl
    list1 = l
    list2 = l2
for i in range(0,l_l2):
    list1.append(None)
print(list2)
print(list1)
for i in range(0,l_l2):
    list1.remove(None)
print(list1)

I keep getting:

[1, 2, 1, 4, 3, 1]
[1, 5, 7, 3, 35, 5, 66, 7]
[1, 5, 7, 3, 35, 5, 66, 7]

What I want:

[1, 2, 1, 4, 3, 1,None,None]
[1, 5, 7, 3, 35, 5, 66, 7]
[1, 5, 7, 3, 35, 5, 66, 7]

Advertisement

Answer

Your main issue is comparing two lists instead of using the length of each. Also, I feel like you swapping the lists might’ve confused you and propagated down to the rest of the code (lines 8 & 9 and 13 & 14 -> affected lines 16 & 20). Nevertheless, I just fixed some parts and think it should work now for what you want it to do. Also, you might want to double-check your math for getting the length.

l = [1,2,1,4,3,1]
l2 = [1,5,7,3,35,5,66,7]
lenl = len(l)
lenl2 = len(l2)
if lenl < lenl2:
    l_l2 = abs(lenl - lenl2)
    list1 = l2
    list2 = l
elif lenl > lenl2:
    l_l2 = abs(lenl2 - lenl)
    list1 = l
    list2 = l2
for i in range(0,l_l2):
    list2.append(None)
print(list2)
print(list1)
for i in range(0,l_l2):
    list2.remove(None)
print(list1)
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement