a quickie: range - x

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • rjtucke

    #1

    a quickie: range - x

    I want an iterable from 0 to N except for element m (<=M).
    I could write
    x = range(N)
    x.remove(m)
    but I want it in one expression.

    Thanks,
    Ross

  • johnzenger@gmail.com

    #2
    Re: a quickie: range - x

    (x for x in xrange(N+1) if x != m)

    rjtucke wrote:
    I want an iterable from 0 to N except for element m (<=M).
    I could write
    x = range(N)
    x.remove(m)
    but I want it in one expression.
    >
    Thanks,
    Ross

    Comment

    • Steven D'Aprano

      #3
      Re: a quickie: range - x

      On Wed, 29 Nov 2006 19:42:16 -0800, rjtucke wrote:
      I want an iterable from 0 to N except for element m (<=M).
      I could write
      x = range(N)
      x.remove(m)
      but I want it in one expression.
      Because the world will end if you can't?

      What's wrong with the solution you already have? If you need to use it
      many times, make it a function. Calling the function is always a one-liner.

      Here's another solution:

      x = [i for i in range(N) if i != m]

      Here's another:

      x = range(m-1) + range(m+1, N)

      Here's a generator to do it:

      def range_except(N, m):
      """Iterator that returns ints from 0 through N-1 except for m."""
      for i in xrange(N):
      if i != m:
      yield i




      --
      Steven.

      Comment

      • Paul Rubin

        #4
        Re: a quickie: range - x

        "rjtucke" <rjtucke@gmail. comwrites:
        I want an iterable from 0 to N except for element m (<=M).
        I could write
        x = range(N)
        x.remove(m)
        but I want it in one expression.
        itertools.chain (xrange(0,m), xrange(m+1, N))

        Comment

        • rjtucke

          #5
          Re: a quickie: range - x

          Thanks, all- that helped.
          Ross

          Comment

          • Kent Johnson

            #6
            Re: a quickie: range - x

            Steven D'Aprano wrote:
            On Wed, 29 Nov 2006 19:42:16 -0800, rjtucke wrote:
            >
            >I want an iterable from 0 to N except for element m (<=M).
            x = range(m-1) + range(m+1, N)
            Should be range(m) + range(m+1, N)

            Kent

            Comment

            Working...