Thanks.
My original approach was to use a list as it seemed to lend itself to that. But as I referred back to the code I was adapting from I ended up using that example with a Tuple. I may look at changing it again, but for now I need the thing to work asap. ---------------------------------------- > To: tutor@python.org > From: __pete...@web.de > Date: Wed, 11 Mar 2015 16:35:09 +0100 > Subject: Re: [Tutor] Tuple indexing > > Ian D wrote: > >> Hi >> >> >> >> I have seen some examples that seem to use a tuple with a method called >> index() >> >> >> The original code I was looking at had this sort of thing: >> >> >> > > Hi Ian! Please don't use that much whitespace. It makes your post hard and > unpleasant to read. Thank you. > > >> SENSORS = ('sensor1', 'sensor2') >> >> >> >> pin_index = SENSORS.index("sensor1") >> >> >> so the result is that pin_index the is equal to 0 >> >> >> I then read that a Tuple has no attribute index on this site >> http://www.diveintopython.net/native_data_types/tuples.html > > Dive into Python is quite old. > >>>>> t.index("example") >> Traceback (innermost last): File "<interactive input>", line 1, in ? >> AttributeError: 'tuple' object has no attribute 'index' >> >> >> >> The example seems to work with 2.7 and 3.3 for me. > > The tuple.index() method has been added in Python 2.6: > > https://docs.python.org/2.6/whatsnew/2.6.html > > """ > Tuples now have index() and count() methods matching the list type’s index() > and count() methods: > >>>> t = (0,1,2,3,4,0,1,2) >>>> t.index(3) > 3 >>>> t.count(0) > 2 > (Contributed by Raymond Hettinger) > """ > >> But I don't find much documentation on indexing Tuples using this method. >> I am just wondering if there is more specific documentation on using >> Tuples this way > > Many Python coders don't use tuples to look up an item index; the > traditional application is to pass multiple values around, e. g. > > def extent(thing): > x = calculate_width(thing) > y = calculate_height(thing) > return x, y > > width, height = extent(picture) > > portrait = width < height > > In the example you have to know the index beforehand, by reading the code or > its documentation rather than going through all items for a matching item. > > When you want to treat all items in a tuple uniformly in most cases using a > tuple is a premature optimisation; use a list or set unless you can name a > compelling reason not to. > > Your sensors example could be solved with a dict: > > sensors = {"sensor1": 0, "sensor2": 1} > > pin_index = sensors["sensor1"] > > This approach will still work well for huge numbers of sensors (constant > time or O(1)), unlike tuple/list.index() where the average lookup time grows > with the number of items in the tuple or list (O(n)). > > _______________________________________________ > Tutor maillist - Tutor@python.org > To unsubscribe or change subscription options: > https://mail.python.org/mailman/listinfo/tutor > _______________________________________________ Tutor maillist - Tutor@python.org To unsubscribe or change subscription options: https://mail.python.org/mailman/listinfo/tutor