#1
  1. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Sep 2012
    Posts
    10
    Rep Power
    0

    This list.. calculate list ints?


    Okey, I just posted here about objects in a list, I got a helpful answer very fast so I was thinking, why not get more help since it is much needed! It is still the list, right now my list looks something like this
    Code:
    mylist = [name 10, name2 15, name3 23]
    This looks retarded I know, but I have the user input a first name, last name and a value into the list, what I want to do is to find the average of the values, if you understand?

    I can't get it working, is that becouse i have mixed str and int in the list, is this even possible?

    again, all help is appreciated!
  2. #2
  3. No Profile Picture
    Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Mar 2012
    Posts
    33
    Rep Power
    3
    ya its pretty possible

    Code:
    list = ['string', 14, '19', 'STRING']
    with this list you can see there are two string @ indexes 0 and 3 and two ints @ the indexes 1 and 2
    easiest way to add these ints is with a loop like this

    Code:
    result = 0
    
    for i in list:
        if type(i) == type(1):
            # type(1) is an int obviously
            result += i
    and thats it, you have added your ints together and stored the result in the variable 'result'

    EDIT:
    Also i'm not sure what your are trying to do with your list there is name name2 and name3 of type string that is stored from input? and the ints just the length of the name?

    well if so you might want to look at this

    Code:
    print "Enter your full name:\n"
    name1 = raw_input('> ')
    name2 = raw_input('> ')
    name3 = raw_input('> ')
    
    list = [name1, len(name1), name2, len(name2), name3, len(name3)]
    
    result = 0
    
    for i in list:
         if type(i) == type(1):
              result += i
    
    print "Your result is %d" %(result)
  4. #3
  5. Contributing User
    Devshed Newbie (0 - 499 posts)

    Join Date
    May 2012
    Location
    39N 104.28W
    Posts
    158
    Rep Power
    3
    First of all, i think the syntax of the list as stated is wrong:
    Code:
    >>> mylist = [name 10, name2 15, name3 23]
      File "<stdin>", line 1
        mylist = [name 10, name2 15, name3 23]
                        ^
    SyntaxError: invalid syntax
    So if you fix that, then, yes, even what appear to be integers will be strings so you have to deal with that. How about this:
    Code:
    >>> mylist = ["name 10", "name2 15", "name3 23"]
    >>> mylist=[i.split() for i in mylist]
    >>> mylist
    [['name', '10'], ['name2', '15'], ['name3', '23']]
    >>> mylist=zip(*mylist)
    >>> mylist
    [('name', 'name2', 'name3'), ('10', '15', '23')]
    >>> av=sum(map(int,mylist[1]))/len(mylist[1])
    >>> av
    16
    >>>
  6. #4
  7. No Profile Picture
    Registered User
    Devshed Newbie (0 - 499 posts)

    Join Date
    Sep 2012
    Posts
    10
    Rep Power
    0
    I'm sorry if i was unclear, it no syntax errorr, but it is hard to explain! still, very helpful, I think I can take it from here, thx guys.
  8. #5
  9. Commie Mutant Traitor
    Devshed Intermediate (1500 - 1999 posts)

    Join Date
    Jun 2004
    Location
    Alpharetta, GA
    Posts
    1,806
    Rep Power
    1570
    Are you certain that it is a list that you want? The structure of the data seems more suited to a dictionary, with the name as the key and the score as the value:

    Code:
    mydict = {name: 10, name2: 15, name3: 23}
    This seems like a better solution for the problem at hand, as well.
    Rev First Speaker Schol-R-LEA;2 JAM LCF ELF KoR KCO BiWM TGIF
    #define KINSEY (rand() % 7) λ Scheme is the Red Pill
    Scheme in Short Understanding the C/C++ Preprocessor
    Taming Python A Highly Opinionated Review of Programming Languages for the Novice, v1.1

    FOR SALE: One ShapeSystem 2300 CMD, extensively modified for human use. Includes s/w for anthro, transgender, sex-appeal enhance, & Gillian Anderson and Jason D. Poit clone forms. Some wear. $4500 obo. tverres@et.ins.gov

IMN logo majestic logo threadwatch logo seochat tools logo