views:

180

answers:

6

I have always seen in python articles/books that python is simple and it has only one way of doing things. I would like someone to explain to me this concept keeping in mind the example below, if I wanted to get the min and max values of sequence I would do the following;

seq=[1,2,3,4,5,6]

min(seq) #1

max(seq) #6

but I can also do this;

seq[:1]  #1

seq[-1]  #6

surely this are two ways of doing one simple thing. This confuses me a bit.

+14  A: 
balpha
+1 for an example.
gath
+4  A: 

In your example, you actually do two different things -- they just happen to give the same result, because your input list is sorted. However, there's always multiple ways of doing things. Python's approach isn't really to avoid or forbid multiple ways of doing the same thing, but have one - and preferably only one - obvious way of doing things.

Thomas Wouters
+8  A: 

One obvious way.

>>> import this
Ignacio Vazquez-Abrams
+26  A: 

Not that it "has one way of doing things" as more "There should be one-- and preferably only one --obvious way to do it." (from Zen of Python).

This doesn't exclude possibility of having more than one way of doing things. We're talking about programming where creativity is one of the most important skills and finding new ways of solving problems is a must.

In your example you're doing two different things:

  1. getting minimum and maximum of the list
  2. getting first and the last element of the list

it happens that in this particular case result is exactly the same.

Łukasz
bah. I'd really like to give you a +10 for this post. Alas, I can only do +1.... too bad... :)
exhuma
+1 for a very good theory, -1 for lack of simple example.
gath
I think that your example is simple enough.
Łukasz
+1  A: 

max(), min() and index slicing they all do different things. In your list, the order may not be sorted like your example, so using slicing will not get the max/min for you in those cases. if you want to get max/min values, just use max()/min() functions

ghostdog74
Am not sure about this...
gath
A: 

There is always more than one way to solve a problem, but the python developers try not to add language features that offer redundant functionality, which is very unlike perl.

mikerobi