• What can I do to make my bad code better:

Question related to mission IP Network: Route Summarization

 
def checkio(data):
p, joint, count = [], "", 0
for i in data:
    p.append("".join( list((8-len(bin(int(j))[2::]))*"0"+bin(int(j))[2::] for j in i.split(".")) ))
if len(data) == 2:
    for z in range(0, 32):
        if p[0][z] == p[1][z]:
            count += 1
            joint += p[0][z]
        else:
            break
if len(data) == 3:
    for z in range(0, 32):
        if p[0][z] == p[1][z] == p[2][z]:
            count += 1
            joint += p[0][z]
        else:
            break
if len(data) == 4:
    for z in range(0, 32):
        if p[0][z] == p[1][z] == p[2][z] == p[3][z]:
            count += 1
            joint += p[0][z]
        else:
            break
o = joint + (32-len(joint))*"0"
return("{0}.{1}.{2}.{3}/{4}".format(int(o[0:8],2),int(o[8:16],2),int(o[16:24],2),int(o[24:32],2),count))

p.s. это в этой задаче кол-во адресов от 2х до 4х, а если их будет 100, не писать же мне сто условий до len(data) == 100. Как исправить?