¿Cuál es la forma más eficiente para comprobar si un valor de una lista se encuentra en uno de los otros valores de la lista?

nadavfr31:

Últimamente he tratado de resolver un problema que tengo en mi código que se trata de comprobar si un valor de una lista se incluye en otro valor de la misma lista. Mi lista específica contiene números de teléfono, por lo que parece que:

['972526174656' , '526174656' , '174656'] 

pero la forma en que quiero que se vea como que es:

['972526174656']

He tratado de resolver con la forma más fácil de hacer por dentro de otro para:

phones_list = ['972526174656' , '526174656' , '174656']
drop_list = []
for phone in phones_list:
    for phone2 in phones_list:
        if phone2.contains(phone) and phone2!=phone:
           drop_list.append(phone)
phones_list = list(set(phones_list) - set(drop_list))

Aunque este ejemplo las obras, su eficiencia es malo y en mi datos originales tengo 3.000.000 de casos como el que he mostrado. Así que la eficiencia es la clave para mi código para tener éxito!

Espero que la comunidad me podría ayudar a resolver esto. Muchas gracias por cualquier tipo de ayuda!

quamrana;

Se puede utilizar itertools.permutations:

phones_list = ['972526174656' , '526174656' , '174656']
drop_list = []

for p1,p2 in itertools.permutations(phones_list, 2):
    if p1 in p2:
        drop_list.append(p1)

phones_list = list(set(phones_list) - set(drop_list))

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=298977&siteId=1
Recomendado
Clasificación