OVH Cloud OVH Cloud

[ xxxx for xxx if xxx ]

4 réponses
Avatar
R12y
Bonjour,

J'ai vu une fois passer sur une liste ou un CVS ou un SVN un truc qui
m'arrangerais bien. Je n'ai pas bookmarké le truc en question et je me
retrouve bien embété, pourtant je savais qu eça allait me servir.

J'ai une liste de chaine de caracteres du genre:

raw_list=['aads','rrr','aararar','aaa','zsdfzzs','rsdfdaaa','aaa']

De cette liste je voudrais extraire tous les elements qui contiennent 2
'a' consécutifs, et les retourner en liste, aussi.
Pour ça jai déjà ma regexp:

rg=re.compile('aa')

La chose que j'ai vu sur le SVN permettait de onliner le tout, dans le
genre:

aa_list=[i if rg.search(i) for i in raw_list]

J'ai plus ou moins tenté les combinaisons de syntaxe possible, mais
évidemment je ne retrouve pas la bonne.
J'ai aussi du mal à trouver un exemple de syntaxe sur internet...

--
Telephone portable "intelligent" (SmartPhone) GSM, GPRS,...
Il est sous Linux, ne coute pas trop cher,...
http://www.it2l.com/product_info.php?cPath=91&products_id=456

4 réponses

Avatar
Christophe Cavalaria
R12y wrote:

Bonjour,

J'ai vu une fois passer sur une liste ou un CVS ou un SVN un truc qui
m'arrangerais bien. Je n'ai pas bookmarké le truc en question et je me
retrouve bien embété, pourtant je savais qu eça allait me servir.

J'ai une liste de chaine de caracteres du genre:

raw_list=['aads','rrr','aararar','aaa','zsdfzzs','rsdfdaaa','aaa']

De cette liste je voudrais extraire tous les elements qui contiennent 2
'a' consécutifs, et les retourner en liste, aussi.
Pour ça jai déjà ma regexp:

rg=re.compile('aa')

La chose que j'ai vu sur le SVN permettait de onliner le tout, dans le
genre:

aa_list=[i if rg.search(i) for i in raw_list]

J'ai plus ou moins tenté les combinaisons de syntaxe possible, mais
évidemment je ne retrouve pas la bonne.
J'ai aussi du mal à trouver un exemple de syntaxe sur internet...



La forme était la bonne dans le sujet du topic :
aa_list=[i for i in raw_list if rg.search(i)]

Avatar
Andréï
Bonjour,

J'ai vu une fois passer sur une liste ou un CVS ou un SVN un truc qui
m'arrangerais bien. Je n'ai pas bookmarké le truc en question et je me
retrouve bien embété, pourtant je savais qu eça allait me servir.

J'ai une liste de chaine de caracteres du genre:

raw_list=['aads','rrr','aararar','aaa','zsdfzzs','rsdfdaaa','aaa']

De cette liste je voudrais extraire tous les elements qui contiennent 2
'a' consécutifs, et les retourner en liste, aussi.
Pour ça jai déjà ma regexp:

rg=re.compile('aa')

La chose que j'ai vu sur le SVN permettait de onliner le tout, dans le
genre:

aa_list=[i if rg.search(i) for i in raw_list]

J'ai plus ou moins tenté les combinaisons de syntaxe possible, mais
évidemment je ne retrouve pas la bonne.
J'ai aussi du mal à trouver un exemple de syntaxe sur internet...


salut,

on trouve des docs la dessus dans l'ouvrage "dive in python"
la forme est
a= [résultat_fonction_de(i) for i in liste if condition_de_filtrage]
j'adore cette forme
A++

Avatar
Bruno Desthuilliers
(snip)

J'ai une liste de chaine de caracteres du genre:

raw_list=['aads','rrr','aararar','aaa','zsdfzzs','rsdfdaaa','aaa']

De cette liste je voudrais extraire tous les elements qui contiennent 2
'a' consécutifs, et les retourner en liste, aussi.
Pour ça jai déjà ma regexp:

rg=re.compile('aa')


Pas besoin d'une regexp pour ça:

'aa' in 'daads'
True









La chose que j'ai vu sur le SVN permettait de onliner le tout, dans le
genre:

aa_list=[i if rg.search(i) for i in raw_list]

J'ai plus ou moins tenté les combinaisons de syntaxe possible, mais
évidemment je ne retrouve pas la bonne.


C'est dans la doc (mais ne me demande pas où !-). La syntaxe est:
[elem for elem in sequence if condition]

dans ton cas :
aa_list = [item for item in raw_list if 'aa' in item]




HTH



Avatar
Bertrand B


C'est dans la doc (mais ne me demande pas où !-). La syntaxe est:
[elem for elem in sequence if condition]



déjà dans le tutorial : 5.1.4 lists comprehensions
puis dans le reference manual : 5.2.4 list display

dans le genre whatnew in python 2.4 : 3 PEP 289: Generator Expressions