1
votes

Comment ajouter un préfixe aux éléments de liste uniquement si le préfixe n'est pas déjà là?

Comment ajouter 'p' uniquement si ce préfixe est manquant, j'essaye d'obtenir ['pa', 'pb', 'pc'] , j'utilise python3.6

>>> l=['a','b','pc']
>>> ['p'+x for x in l]
['pa', 'pb', 'ppc']
>>>
>>> ['p'+x for x in l if not x.startswith('p')]
['pa', 'pb']


1 commentaires

['p' + x sinon x.starts with ('p') else x for x in l]


3 Réponses :


1
votes

Essayez ceci.

['p' + x if x[0] != 'p' else x for x in l]

Désolé, cela donne le même que le vôtre, si vous voulez les trois alors essayez.

['p' + x for x in l if x[0] != 'p']


1 commentaires

OP doit se rappeler qu'il s'agit de chaînes, qui ne sont que des tableaux de caractères. Bon travail @cmxu



0
votes

Essayez ceci:

new_list = ['p' + x if not x[0] == 'p' else x for x in l]

ou en une seule ligne:

new_list = ['p'+x for x in l if x[0]!="p"] + [x for x in l if x[0]=="p"]


0 commentaires

0
votes

Ou ceci, si vous ne souhaitez pas enregistrer dans une nouvelle liste:

for x in l:
    if(x[0]!='p'):
        l[l.index(x)]='p'+x


1 commentaires

Doit utiliser enumerate pour obtenir l'index de l'élément de la liste, plutôt que l [l.index (x)] . Vous devriez également utiliser str.startswith () , plutôt que x [0]! = 'P'