Inclusive range() in Python

March 6th, 2008

The Python’s built-​in range() is an extremely useful func­tion, but has a little prob­lem: it doesn’t include the right extreme of the range. For exam­ple, a call to range(1, 10) will be eval­u­ated to this a list of num­bers from 1 to 9 (not includ­ing 10):

>>> range(1, 10)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Today I need for a work a range() func­tion that includes the right extreme, so I had to develop mine. Here it is:

def inclusive_range(start, stop, step=1):
    """
    A range() clone, but this includes the extremes
    """
    l = []
    x = start
    while x <= stop:
        l.append(x)
        x += step
    return l

Of course there are faster imple­men­ta­tions of this func­tion around here (and if you know one, please let me know) and surely this one is not one of the fastest, but it works and that solves my prob­lem right now.

11 Comments, tagged with Coding,Python

When the “Python Vs PHP” war matters

February 21st, 2008

Yesterday I had a meet­ing with a cus­tomer about a new site I should develop for them. Since they’re a book pub­lisher, they wanted an online book store. Apart from the tech­ni­cal details (the site isn’t as simple as you may believe, they need a lot of not-so-easy-to-do stuff), the most impor­tant point we focused on is the fact that they have an inter­nal IT tech­ni­cian that han­dles all their com­puter needs. If you’re asking your­self why this mat­ters, keep reading:

  • me (to be precise, my company) stopped development of PHP sites about one year ago in favor of Python
  • we release the web site’s code to them
  • for this project, we haven’t been asked any kind of future support; this means that when the site is finished, we won’t touch the product anymore (unless they don’t pay us to do the modifies they need)
  • but they don’t want to pay us to these modifies, because they have their internal IT technician
  • their technician knows only PHP (and he never even known the Python’s existence until yesterday)

(Con­tinue reading…)

Python listdir order

February 15th, 2008

Just a quick tip. If you’re using the python’s os.listdir() func­tion you may be not happy at all with the way it orders results. The fol­low­ing code snip­pet orders the result of the list­dir so it shows direc­to­ries first and then files, and sorts these two groups alphabetically:

import os
def custom_listdir(path):
    """
    Returns the content of a directory by showing directories first
    and then files by ordering the names alphabetically
    """
    dirs = sorted([d for d in os.listdir(path) if os.path.isdir(path + os.path.sep + d)])
    dirs.extend(sorted([f for f in os.listdir(path) if os.path.isfile(path + os.path.sep + f)]))

    return dirs

8 Comments, tagged with Coding,Python

Now you know how to say hello in english

January 28th, 2008

I have a love/hate rela­tion­ship against the hello mes­sages shown in all the world lan­guages on flickr. That’s why this morn­ing I was talk­ing with a friend on IRC about this and a bad idea jumped in my mind: do an IRC bot that says hello in many lan­guages when some­one joins a channel.

It’s from sev­eral years that I don’t do any­thing IRC related, but this time I had two spe­cial weapons in my back­pack: python and twisted. The final bot is ~90 lines of code, half of the which are for the hello list and the entire coding process took less than 20 minutes.

(Con­tinue reading…)

« Previous PageNext Page »

Microblogging

  1. January 28th

    1. Finally something to eat! http://t.co/FH3x3oGR [krat]

      1:10am via Twitter

  2. January 27th

    1. Finally some cleanup on my inbox. Feels cleaner now. [krat]

      5:13pm via Twitter

  3. January 26th

    1. panzerotti & peroni [krat]

      7:49pm via Twitter

  4. January 25th

    1. I lost count of how many times I wanted to expand the tweet stream and clicked "favorite" instead [krat]

      11:15am via Twitter

  5. January 23rd

    1. It's hateful when you have to chase people who owe you some money [krat]

      5:45pm via Twitter

    Powered by Lifestream.

Search