Well, in the specific case of numeric arrays, you can use Numeric or numarray :
from Numeric import array, compress ol = array(original_list) selection = array([condition(i) for i in original_list) list1 = compress(selection, ol) list2 = compress(!selection, ol) Even better, if condition can be expressed directly on the matrix itself (which is pretty common with Numeric/numarray): ol = array(original_list) selection = condition(ol) list1 = compress(selection, ol) list2 = compress(!selection, ol) Remember: if you have complex index operations on arrays of numbers, Numeric (and even more numarray) contains a lot of very usefull efficient functions. Pierre Christopher Arndt a écrit : > Hi, > > I wonder if there is a shorter form of the following idiom: > > list1 = [] > list2 = [] > for item in original_list: > if condition(item): > list1.append(item) > else: > list2.append(item) > > (optional step:) > > original_list[:] = list1 > > > I call this the "Aschenputtel" problem, because it is described by the famous > quote from the fairy tale as told by the Grimm brothers: > > "Die guten ins Töpfchen, die schlechten ins Kröpfchen." > > (The good ones in the pot, the bad ones in the crop) > > Chris > > > > > ------------------------------------------------------------------------ > > _______________________________________________ > Tutor maillist - Tutor@python.org > http://mail.python.org/mailman/listinfo/tutor -- Pierre Barbier de Reuille INRA - UMR Cirad/Inra/Cnrs/Univ.MontpellierII AMAP Botanique et Bio-informatique de l'Architecture des Plantes TA40/PSII, Boulevard de la Lironde 34398 MONTPELLIER CEDEX 5, France tel : (33) 4 67 61 65 77 fax : (33) 4 67 61 56 68 _______________________________________________ Tutor maillist - Tutor@python.org http://mail.python.org/mailman/listinfo/tutor