what do you mean by one line ? Using map/filter, I believe it is possible. Somthing like:
map(lambda (s,f): os.path.exists(f) and f or s, map(lambda x: (x, re.replace(x, "-s","")), imgPaths) My regex is a bit rusty but I hope you got the idea of what I am trying to do. If there is a way to make the re return without destroying x, the outer map is not needed I believe(that is run it twice, once for getting the filename to do the testing, then again based on the testing result). Xah Lee wrote: > is there a way to condense the following loop into one line? > > # -*- coding: utf-8 -*- > # python > > import re, os.path > > imgPaths=[u'/Users/t/web/Periodic_dosage_dir/lanci/t4/oh/DSCN2059m-s.jpg', > u'/Users/t/web/Periodic_dosage_dir/lanci/t4/oh/DSCN2062m-s.jpg', > u'/Users/t/web/Periodic_dosage_dir/lanci/t4/oh/DSCN2097m-s.jpg', > u'/Users/t/web/Periodic_dosage_dir/lanci/t4/oh/DSCN2099m-s.jpg', > u'/Users/t/web/Icons_dir/icon_sum.gif'] > > # change the image path to the full sized image, if it exists > # that is, if image ends in -s.jpg, find one without the '-s'. > temp=imgPaths[:] > imgPaths=[] > for myPath in temp: > p=myPath > (dirName, fileName) = os.path.split(myPath) > (fileBaseName, fileExtension)=os.path.splitext(fileName) > if(re.search(r'-s$',fileBaseName,re.U)): > p2=os.path.join(dirName,fileBaseName[0:-2]) + fileExtension > if os.path.exists(p2): p=p2 > imgPaths.append(p) > > temp=[] > print imgPaths > > Xah > [EMAIL PROTECTED] > ∑ http://xahlee.org/ -- http://mail.python.org/mailman/listinfo/python-list