Re: interchange entries in list
- To: mathgroup at smc.vnet.net
- Subject: [mg27455] Re: interchange entries in list
- From: "Allan Hayes" <hay at haystack.demon.co.uk>
- Date: Sun, 25 Feb 2001 20:56:03 -0500 (EST)
- References: <97a7nt$alt@smc.vnet.net>
- Sender: owner-wri-mathgroup at wolfram.com
Murray, One problem, swap[v_List,i_,j_]:=v/.{v[[i]]\[Rule]v[[j]],v[[j]]\[Rule]v[[i]]} swap[{a,b,a},2,1] {b,a,b} -- Allan --------------------- Allan Hayes Mathematica Training and Consulting Leicester UK www.haystack.demon.co.uk hay at haystack.demon.co.uk Voice: +44 (0)116 271 4198 Fax: +44 (0)870 164 0565 "Murray Eisenberg" <murray at math.umass.edu> wrote in message news:97a7nt$alt at smc.vnet.net... > Is there any hidden trouble with the following function for > interchanging two entries in a list? > > swap[v_List, i_, j_] := v /. {v[[i]]->v[[j]], v[[j]]->v[[i]]} > > It seems to work, yet I'm uncomfortable. > > Note that I am _not_ uncomfortable with a construction such as > > vec[[{1,2}]] = v[[{2,1}]] > > or the Module > > swapItems[v_List, i_, j_] := > Module[ {t = v}, > t[[{i, j}]] = t[[{j, i}]]; > t > ] > > that expresses this idea. > > With "swap", evidently my concern is with when what items get replaced > by what. In other words, why SHOULD "swap" work? >