J'ai une liste qui contient tellement d'éléments. Certains éléments sont préfixes / suffixes par n'importe quel caractère alphaNumérique.
list3=["xxsignzz","xxsign","signzz","Design","abc.sign.abc"]
Je veux la liste3 dans laquelle j'aurai des éléments comme
list1 = ["sign","xxsignzz","xxsign", "signzz","Design", "abc.sign.abc", "SIGN", "siGn"] list2 = ["sign"]
Je devrais obtenir toute la valeur du préfixe / suffixe de signe par n'importe quoi dans list3.
Quelqu'un peut-il m'aider.
5 Réponses :
Est-ce ce que vous recherchez:
lower = [l.lower() for l in list1] list3 = [el[0] for el in zip(list1, lower) if el[1] not in list2] >>> ['xxsignzz', 'xxsign', 'signzz', 'Design', 'abc.sign.abc']
Essayez :
list1 = ["sign", "xxsignzz","xxsign", "signzz","Design", "abc.sign.abc", "SIGN", "siGn"] list2 = ["sign"] output = [i for i in list1 for x in list2 if x in i and x.lower() != i.lower()] print(output) # ['xxsignzz', 'xxsign', 'signzz', 'Design', 'abc.sign.abc']
Utilisation de Regex.
Ex:
import re
list1 = ["sign","xxsignzz","xxsign", "signzz","Design", "abc.sign.abc", "SIGN", "siGn"]
list2 = ["sign"]
ptrn = re.compile("|".join(list2) + r"\b", flags=re.I)
print([i for i in list1 if not ptrn.match(i)])
#--> ['xxsignzz', 'xxsign', 'signzz', 'Design', 'abc.sign.abc']
Essayez :
['xxsignzz', 'xxsign', 'signzz', 'Design', 'abc.sign.abc']
[li for li in list1 if list2[0] in li and len(li)!=len(list2[0])]
La manière pythonique de résoudre ce problème est d'utiliser la compréhension de liste . J'ai géré si votre list2 a plus d'un élément.
['xxsignzz', 'xxsign', 'signzz', 'Design', 'abc.sign.abc']
La compréhension de la liste ci-dessus est équivalente à:
result = []
for i in list1:
for j in list2:
if j in i and len(j) < len(i):
result.append(i)
print(result)
Sortie:
list1 = ["sign", "xxsignzz","xxsign", "signzz","Design", "abc.sign.abc", "SIGN", "siGn"] list2 = ["sign"] result = [i for i in list1 for j in list2 if j in i and len(j) < len(i)] print(result)