Re: Re: Re: position of sequence
- To: mathgroup at smc.vnet.net
- Subject: [mg107022] Re: [mg107012] Re: [mg106993] Re: [mg106976] position of sequence
- From: Patrick Scheibe <pscheibe at trm.uni-leipzig.de>
- Date: Mon, 1 Feb 2010 06:09:18 -0500 (EST)
- References: <201001301212.HAA25132@smc.vnet.net>
Hi,
> Please educate me if I am misunderstanding, but Position is not SequenceHold
yes, you're right. It's a pity that "my written down idea" + "ocam's
razor" + "it worked on the sample" failed it this case.
I don't like "iterations" since I have enough of them in other languages
and therefore, my next guess would have been something like
pos[l_List, what_List] :=
ReplaceList[
l, {head___, Sequence @@ what, ___} :> Length[{head}] + 1]
pos[RandomInteger[{0, 10}, 10000], {4, 5, 6}]
Sorry, for the confusion.
Cheers
Patrick
> and therefore, your constructs don't seem to work for me. They seem to work
> only because you provided length - 2 or length- 3 sequences (try length-4
> and I am getting en error for v7), which Position interprets as 2 or 3
> additional arguments. Thus,
>
> Position[list, Sequence[11, 12, 13]] is equivalent to
>
> Position[list, 11,12,13], which means:
>
> find position of element <11> in the first 12 levels of expression (<list>),
> stopping with at most 13 results. By accident (or luck), this gives correct
> result on the toy example that you have. The same situation with Bob's
> example Position[list, Sequence[3, 4]].
> Or is this an extension of v.7.1, that I am not aware of?
>
> Regards,
> Leonid
>
> On Sun, Jan 31, 2010 at 2:55 AM, Patrick Scheibe <
> pscheibe at trm.uni-leipzig.de> wrote:
>
> > Hi,
> >
> > I assume the only thing you miss is how to express a "sequence of
> > numbers"? Just use Sequence[] :-)
> >
> > list=Range[20];
> > Position[list, Sequence[11, 12, 13]]
> >
> > Cheers
> > Patrick
> >
> > On Sat, 2010-01-30 at 07:12 -0500, JB wrote:
> > > Hi,
> > >
> > > What is the most efficient way to find the position of the beginning
> > > of a sequence of numbers from a list?
> > >
> > > I found a couple of ways:
> > >
> > > find 3,4 in list={1,2,3,4,5};
> > >
> > > 1. pos=Intersection[Position[list,3],(Position[list,4])+1]
> > >
> > > 2. pos=Position[Partition[list,2,1],{3,4}]
> > >
> > > Are there other ways to do this?
> > > What is the best way when dealing with large lists?
> > >
> > > Thanks,
> > > JB
> > >
> >
> >
> >
>