Why loop variable is not updated in python -


this code printing 1 2 4 5..my question why p not updated new array @ 3rd iteration

p = [1, 2, [1, 2, 3], 4, 5] each in p:   if type(each) == int:     print each   else:     p = each 

actually precise when debugged code saw updating value of p each variable not reinitialised again.

because of if type(each) == int: line. third element list ([1, 2, 3]) , not int, doesn't print anything.

now comes changing p variable: p name object, not object itself. if p = each inside loop, doesn't affect original object you're looping through, changes name p local name, points different object. round of loop ends, loop continues business original object looping through.

so, notice p = each doesn't change existing object (the p you're looping through), creates new local name p points value of each.


what want this:

p = [1, 2, [1, 2, 3], 4, 5] each in p:     if isinstance(each, list):         x in each:             print x     else:         print each 

this again, isn't recursive, , you'd need function that:

def print_elements(iterable):     element in iterable:         if isinstance(element, list):             print_elements(element)         else:             print element 

if want unpack values 1 list use them other printing, should use this:

def recursive_unpack(iterable):     element in iterable:         if isinstance(element, list):             yield recursive_unpack(element)         else:             yield element 

why i'm using isinstance() instead of type(): differences between isinstance() , type() in python

also, if want apply iterables (my last example) , not lists: in python, how determine if object iterable?


Comments

Popular posts from this blog

PHP DOM loadHTML() method unusual warning -

python - How to create jsonb index using GIN on SQLAlchemy? -

c# - TransactionScope not rolling back although no complete() is called -