How to display name of elements in list?

Discussion in 'Python' started by cz, Jul 12, 2006.

  1. cz

    cz Guest

    Hi there,

    I'm sure there is a very simple solution for my question, I just didn't
    find it up to now.
    I'm using a badly documented module and therefore need to find out
    about how to access the elements in a list.
    (I need to do this in Python 1.5.3)
    Any help appreciated very much. Thanks!

    cz
     
    cz, Jul 12, 2006
    #1
    1. Advertising

  2. cz

    Ant Guest

    > I'm using a badly documented module and therefore need to find out
    > about how to access the elements in a list.
    > (I need to do this in Python 1.5.3)


    I presume this is the same in 1.5 use dir():

    >>> import os
    >>> dir(os)

    ['F_OK', 'O_APPEND', 'O_BINARY', 'O_CREAT', 'O_EXCL', 'O_NOINHERIT',
    'O_RANDOM',
    'O_RDONLY', 'O_RDWR', 'O_SEQUENTIAL', 'O_SHORT_LIVED', 'O_TEMPORARY',
    'O_TEXT',

    (etc)
     
    Ant, Jul 12, 2006
    #2
    1. Advertising

  3. On Wed, 12 Jul 2006 05:17:30 -0700, cz wrote:

    > Hi there,
    >
    > I'm sure there is a very simple solution for my question, I just didn't
    > find it up to now.
    > I'm using a badly documented module and therefore need to find out
    > about how to access the elements in a list.


    Er, the same way you would access the elements in any other list?

    mylist[0]
    mylist[1:5]

    etc.


    Perhaps you need to rephrase your question.


    --
    Steven.
     
    Steven D'Aprano, Jul 12, 2006
    #3
  4. cz

    cz Guest


    > Perhaps you need to rephrase your question.
    > --
    > Steven.


    Thanks for your reply.
    OK, I'll try to make this more clear:
    My list called "elten" looks like that:

    [Tensor: id = 1, intensity = 2976.52
    xx = -1447.32, xy = 52.458, xz = -594.186
    yy = -1090.54, yz = -0.0158068, zz = -4043.
    , Tensor: id = 26, intensity = 2896.9
    ...
    , Tensor: id = 5, intensity = 2920.5
    xx = -1534.53, xy = 23.4858, xz = -623.967
    yy = -1070.47, yz = 99.6301, zz = -3979.87
    ]

    Now with
    >>print elten[1].id

    I will get "1" as an answer.
    Or with
    >>print elten[1].intensity

    it will print "2976.52".
    But this doesn't work for >>print elten[1].xx, why? So that's how I
    came to the question how to access these values. Any idea?
    Thanks a lot!
    cz
     
    cz, Jul 12, 2006
    #4
  5. Hi Claudio,

    cz wrote:
    >> Perhaps you need to rephrase your question.
    >> --
    >> Steven.

    >
    > Thanks for your reply.
    > OK, I'll try to make this more clear:
    > My list called "elten" looks like that:
    >
    > [Tensor: id = 1, intensity = 2976.52
    > xx = -1447.32, xy = 52.458, xz = -594.186
    > yy = -1090.54, yz = -0.0158068, zz = -4043.
    > , Tensor: id = 26, intensity = 2896.9
    > ...
    > , Tensor: id = 5, intensity = 2920.5
    > xx = -1534.53, xy = 23.4858, xz = -623.967
    > yy = -1070.47, yz = 99.6301, zz = -3979.87
    > ]
    >
    > Now with
    >>> print elten[1].id

    > I will get "1" as an answer.
    > Or with
    >>> print elten[1].intensity

    > it will print "2976.52".
    > But this doesn't work for >>print elten[1].xx, why? So that's how I
    > came to the question how to access these values. Any idea?


    The list above is not a valid Python list. What is it that you store in that list?

    Or is it maybe a dictionary?

    Stefan
     
    Stefan Behnel, Jul 12, 2006
    #5
  6. cz

    cz Guest

    > The list above is not a valid Python list. What is it that you store in that list?
    >
    > Or is it maybe a dictionary?
    >
    > Stefan


    Thanks for your help. How can I find out about what this is? As I said
    it's generated by a insufficiently documented module. So if this is a
    user defined datatype, is there still a possibility to find the name of
    the data fields storing the xx, xy, ... ?
    Thanks.
     
    cz, Jul 12, 2006
    #6
  7. cz

    Magnus Lycka Guest

    >> My list called "elten" looks like that:
    >>
    >> [Tensor: id = 1, intensity = 2976.52
    >> xx = -1447.32, xy = 52.458, xz = -594.186
    >> yy = -1090.54, yz = -0.0158068, zz = -4043.
    >> , Tensor: id = 26, intensity = 2896.9
    >> ...
    >> , Tensor: id = 5, intensity = 2920.5
    >> xx = -1534.53, xy = 23.4858, xz = -623.967
    >> yy = -1070.47, yz = 99.6301, zz = -3979.87
    >> ]


    > The list above is not a valid Python list. What is it that you store in that list?


    It might well be a normal Python list.

    The question is what type the items in the list are...
    The result of printing a list L is basically a string you
    could make like this:

    '[' + ','.join(map(repr,L)) + ']'

    It seems the elements in this list appear as something
    like this when you apply the repr() function on them:

    Tensor: id = 1, intensity = 2976.52
    xx = -1447.32, xy = 52.458, xz = -594.186
    yy = -1090.54, yz = -0.0158068, zz = -4043.

    So, the issue is not how you work with a list,
    but how you work with the elements of this type.

    To reduce the problem to that, you can assign the
    first element in the list to a variable.

    elem0 = elten[0]

    Then you can inspect that in isolation, without
    the confusion of the list.

    type(elem0)
    dir(elem0)
    etc...
     
    Magnus Lycka, Jul 12, 2006
    #7
  8. cz wrote:

    >> The list above is not a valid Python list. What is it that you store in
    >> that list?
    >>
    >> Or is it maybe a dictionary?
    >>
    >> Stefan

    >
    > Thanks for your help. How can I find out about what this is? As I said
    > it's generated by a insufficiently documented module. So if this is a
    > user defined datatype, is there still a possibility to find the name of
    > the data fields storing the xx, xy, ... ?


    I guess the objects stored in the list have a __repr__-method overloaded
    that produces the text you see.

    What you should do is to install rlcompleter2, fire up a python prompt and
    write code that produces a list of your objects. Then you can play around
    with the objects and utilize the reflection capabilities of python, which
    are conveniently exposed using rlcompleter2.

    Another option is to look into the source of that module and identify the
    objects created. Documentation is overrated - use the source, Luke!

    Diez
     
    Diez B. Roggisch, Jul 12, 2006
    #8
  9. cz schrieb:
    >> The list above is not a valid Python list. What is it that you store in that list?
    >>
    >> Or is it maybe a dictionary?
    >>
    >> Stefan

    >
    > Thanks for your help. How can I find out about what this is? As I said
    > it's generated by a insufficiently documented module. So if this is a
    > user defined datatype, is there still a possibility to find the name of
    > the data fields storing the xx, xy, ... ?


    Maybe you should read a bit about Python classes and built-in functions like
    "dir()", "type()", "vars()", ...

    http://docs.python.org/tut/node8.html#SECTION008300000000000000000
    http://docs.python.org/tut/node11.html
    http://docs.python.org/lib/built-in-funcs.html

    Just start an interactive Python session and play with the object you are
    trying to explore. That should get you going.

    Stefan
     
    Stefan Behnel, Jul 12, 2006
    #9
  10. Stefan Behnel wrote:

    > The list above is not a valid Python list.


    there's no Python 1.5.3 either. maybe he's posting from a parallel,
    slightly different universe ?

    </F>
     
    Fredrik Lundh, Jul 12, 2006
    #10
  11. cz

    Tal Einat Guest

    Diez B. Roggisch <deets <at> nospam.web.de> writes:
    >
    > What you should do is to install rlcompleter2...

    [snip]
    >
    > Another option is to look into the source of that module and identify the
    > objects created. Documentation is overrated - use the source, Luke!


    rlcompleter is overrated, and only works on Unix/Linux/etc.

    IDLE's interpreter has an auto-completion extension, which is bundled in
    Python2.5.

    You can also get a much better version of IDLE which includes a more robust
    version of the completion extension from Idle-Spoon:
    http://idlespoon.python-hosting.com/


    stefan writes:
    >
    > Just start an interactive Python session and play with the object you are
    > trying to explore. That should get you going.


    +1
    Python is fun - just open an interpreter and play around!


    - Tal
     
    Tal Einat, Jul 12, 2006
    #11
  12. > rlcompleter is overrated, and only works on Unix/Linux/etc.
    >
    > IDLE's interpreter has an auto-completion extension, which is bundled in
    > Python2.5.


    I don't use idle, and don't want to. So for me rlcomlpeter2 is a good thing.
    And under windows, it at least works under cygwin.

    Diez
     
    Diez B. Roggisch, Jul 12, 2006
    #12
  13. cz

    Guest

    , Jul 12, 2006
    #13
  14. cz

    cz Guest

    Re: How to display name of elements in list? PROBLEM SOLVED.

    wrote:
    > It looks like the PyTensor object *should* have .xx, .xy, etc
    > properties, but they may be accessible through a matrix, i.e. .t(i,j)



    Thanks to all of you for your help!
    The solution is easy: The tensor components have labels t11, t12,...
    Good guess ruibalp!
     
    cz, Jul 27, 2006
    #14
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. =?iso-8859-1?B?bW9vcJk=?=
    Replies:
    7
    Views:
    877
    Roedy Green
    Jan 2, 2006
  2. ding feng
    Replies:
    2
    Views:
    2,881
    ding feng
    Jun 25, 2003
  3. Adam Hartshorne
    Replies:
    2
    Views:
    387
    Nitin Motgi
    Jan 27, 2006
  4. Debajit Adhikary
    Replies:
    17
    Views:
    707
    Debajit Adhikary
    Oct 18, 2007
  5. Pallav singh
    Replies:
    4
    Views:
    433
    Thomas J. Gritzan
    Sep 16, 2009
Loading...

Share This Page