By using this site, you agree to our updated Privacy Policy and our Terms of Use. Manage your Cookies Settings.
455,441 Members | 1,807 Online
Bytes IT Community
+ Ask a Question
Need help? Post your question and get tips & solutions from a community of 455,441 IT Pros & Developers. It's quick & easy.

tuple versus list

P: n/a
suppose i'm going to have a data structure like this:

[
[imgFullPath,(width, height)],
[imgFullPath,(width, height)],
[imgFullPath,(width, height)],
[imgFullPath,(width, height)],
....
]

should i use (width,height) or [width,height]?
what advantage i get to use n-tuple instead of the generic list?

Thanks.

Xah
xa*@xahlee.org
http://xahlee.org/

Oct 16 '05 #1
Share this Question
Share on Google+
5 Replies


P: n/a
It's simple: if you want to modify the data structure after it has been
created, use lists, otherwise tuples.

Tuples are much more memory efficient, so your program will consume
less memory and probably run faster. So preferably use tuples. However
with tuples you can't do:
t[0] = 'new value'
t.append('new value')
These statements are possible with lists.

Stani
--
SPE - Stani's Python Editor (http://pythonide.stani.be)

Oct 16 '05 #2

P: n/a
In this particular case, it seems that (width,height) looks nicer. But
I think otherwise, list constuct is easier to read, even though it is
supposed to be slower.

With list you can :
[a] + [ x for x in something ]

With tuple it looks like this :
(a,) + tuple(x for x in something)

I think the list looks cleaner. And since you cannot concat tuple with
list, I think unless it looks obvious and natural(as in your case), use
list.

Xah Lee wrote:
suppose i'm going to have a data structure like this:

[
[imgFullPath,(width, height)],
[imgFullPath,(width, height)],
[imgFullPath,(width, height)],
[imgFullPath,(width, height)],
...
]

should i use (width,height) or [width,height]?
what advantage i get to use n-tuple instead of the generic list?

Thanks.

Xah
xa*@xahlee.org
http://xahlee.org/


Oct 16 '05 #3

P: n/a
bo****@gmail.com wrote:
In this particular case, it seems that (width,height) looks nicer. But
I think otherwise, list constuct is easier to read, even though it is
supposed to be slower.

With list you can :
[a] + [ x for x in something ]

With tuple it looks like this :
(a,) + tuple(x for x in something)

I think the list looks cleaner. And since you cannot concat tuple with
list, I think unless it looks obvious and natural(as in your case), use
list.

i always use the structure analogy. if you view (width, height) as a structure,
use a tuple. if you view it a sequence, use a list. in this example, i view it
as a stucture, so i would use (width, height) as a tuple.

bryan

Oct 16 '05 #4

P: n/a
In article <ma*************************************@python.or g>,
Bryan <be****@gmail.com> wrote:
bo****@gmail.com wrote:
In this particular case, it seems that (width,height) looks nicer. But
I think otherwise, list constuct is easier to read, even though it is
supposed to be slower.

With list you can :
[a] + [ x for x in something ]

With tuple it looks like this :
(a,) + tuple(x for x in something)

I think the list looks cleaner. And since you cannot concat tuple with
list, I think unless it looks obvious and natural(as in your case), use
list.

i always use the structure analogy. if you view (width, height) as a
structure,
use a tuple. if you view it a sequence, use a list. in this example, i view
it
as a stucture, so i would use (width, height) as a tuple.


Right, but there's an unfortunate ambiguity in the term "sequence",
since in Python it is defined to include tuple. I gather you meant
more in the abstract sense of a data collection whose interesting
properties are of a sequential nature, as opposed to the way we are
typically more interested in positional access to a tuple. Maybe
a more computer literate reader will have a better word for this,
that doesn't collide with Python terminology. My semi-formal
operational definition is "a is similar to a[x:y], where
x is not 0 or y is not -1, and `similar' means `could be a legal
value in the same context.'"

Donn Cave, do**@u.washington.edu
Oct 17 '05 #5

P: n/a

i always use the structure analogy. if you view (width, height) as a
structure,
use a tuple. if you view it a sequence, use a list. in this example, i view
it
as a stucture, so i would use (width, height) as a tuple.

Right, but there's an unfortunate ambiguity in the term "sequence",
since in Python it is defined to include tuple. I gather you meant
more in the abstract sense of a data collection whose interesting
properties are of a sequential nature, as opposed to the way we are
typically more interested in positional access to a tuple. Maybe
a more computer literate reader will have a better word for this,
that doesn't collide with Python terminology. My semi-formal
operational definition is "a is similar to a[x:y], where
x is not 0 or y is not -1, and `similar' means `could be a legal
value in the same context.'"

Donn Cave, do**@u.washington.edu

yes, you are correct. i shouldn't have used the word "sequence" which is a
python term. maybe structure vs. array. in any case, i think the *wrong*
answer that is often given to this question is along the lines of if it's read
only, make it a tuple. if it's read write, make it a list. a great trivial
example is a point. a point is a structure (x, y). if you have many points
then you have a list of structures: [(x, y), (x1, y1), (x2, y2), ...]. to me,
it doesn't matter if you want to modify a point. if you do then create a new
one, but don't make it a list just to make it modifiable.

bryan

Oct 18 '05 #6

This discussion thread is closed

Replies have been disabled for this discussion.