Add items to Python list

under__list =[[74, 0.1423287845938018, None, None, 10, 
   1.9099604642265018, 0.5185563065935468, 1.6825659992347914, 
   3.547506695574544, 2.7789822726693023, 20051, 0, 25, None, ' >50K'],
  [44, 0.9181229773462783, None, None, 14, 0.17973300970873787, 
   0.1644822006472492, 0.13940129449838187, 1.1252427184466018, 
   0.4357200647249191, 0, 0, 40, None, ' <=50K']]

      

I have the list above, but I want to add items together but skip items None

and ">=50"

.

I want to be able to do this even if I don't know where the None

values ​​of the numbers are. Any suggestions?

for item in zip(under__list[row]):
    under__list.append(int(sum(item[0])))

      

Look for the way out below:

[1182, 25.2452245, None, None, 9212, 256, 2624, 25.24,
   2532, 25, 2005252, 52, 25632, None, ' >50K']

      

This will be one list with added numbers.

+3


source to share


3 answers


It sounds like you want to sum the elements at the same indices from all the inner lists. To do this, first of all, you need to use zip

with *

, and then in the control over the list of the first element of each row there will be an instance of the type Number

or just int

or float

( isinstance(x[0], (int, float))

), if so, sum them up, the rest use the first as the value.

>>> from numbers import Number
>>> [sum(x) if isinstance(x[0], Number) else x[0] for x in zip(*under__list)]
[118, 1.0604517619400802, None, None, 24, 2.0896934739352395, 0.683038507240796, 1.8219672937331732, 4.672749414021146, 3.2147023373942214, 20051, 0, 65, None, ' >50K']

      



The expression sum(x) if isinstance(x[0], Number) else x[0]

is called a conditional expression .

+2


source


for item in under_list:
    item_ = filter(lambda x: x != None and x >= 50, under_list)
    # Here compute sum of item_ and append to the right place

      



+1


source


Write a function to return what you need:

def foo(thing):
    try:
        return sum(thing)
    except TypeError:
        return thing[0]

      

map

function for strings zip

ped << 23>

>>> under__list =[[74, 0.1423287845938018, None, None, 10, 1.9099604642265018, 0.5185563065935468, 1.6825659992347914, 3.547506695574544, 2.7789822726693023, 20051, 0, 25, None,' >50K'], [44, 0.9181229773462783, None, None, 14, 0.17973300970873787, 0.1644822006472492, 0.13940129449838187, 1.1252427184466018, 0.4357200647249191, 0, 0, 40, None, ' <=50K']]

>>> map(foo, zip(*under__list))
[118, 1.0604517619400802, None, None, 24, 2.0896934739352395, 0.683038507240796, 1.8219672937331732, 4.672749414021146, 3.2147023373942214, 20051, 0, 65, None, ' >50K']
>>>

      

+1


source







All Articles