Python Forum
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Adding two lists
#1
So I'm trying to add two lists together with integers in the lists. In both lists there are strings with "null". I want to add the two lists together, but i want the null values of list 1 to be filled with the values that aren't "null" in list 2.

list1 = [5,6,'null',1,'null']
list2 = ['null','null',3,'null',8]

prefered_output = [5,6,3,1,8]
I hope you guys can help :)
Reply
#2
There are several possible solutions to that. What have you tried so far?
Post your code attempt and we will let you know how to correct it to make it work right.
Reply
#3
This is what i have tried until now

list1 = [5,6,'null',1,'null']
list2 = ['null','null',3,'null',8]
 
#prefered_output = [5,6,3,1,8]
prefered_output = []
for n in range(0, len(list1)-1):
    if type(list1[n]) != int:
        prefered_output[n] = list1[n]
    else:
        prefered_output[n] = list2[n]
However this gives an error: IndexError: list assignment index out of range
Reply
#4
for n in range(0, len(list1)-1)
This is not Pythonic, instead it is better to use enumerate():
for index, item in enumerate(list1):
On each iteration, "index" will be what you wanted "n" to be, and "item" will be an item from "list1".
You can see how it works with this:
for index, item in enumerate(list1):
    print(index, item)
And the list assignment error happens because you start with an empty list (prefered_output) and append to an uninitiated index. Instead use list's .append() method.
Reply
#5
Hey man thank you! i figured it out! This is my code now

list1 = [5,6,'null',1,'null']
list2 = ['null','null',3,'null',8]
 
#prefered_output = [5,6,3,1,8]
prefered_output = []
for index, item in enumerate(list1):
    print(index, item)
    if type(list1[index]) != int:
        prefered_output.append(list2[index]) 
    else:
        prefered_output.append(list1[index])

print(prefered_output)
Thanks again :)
Reply
#6
Why use indexing at all - when you have zip?
[val2 if val1 == 'null' else val1 for val1, val2 in zip(list1, list2)]

PS Recommended form to check type - isinstance

if isinstance(value, int):
.....
Test everything in a Python shell (iPython, Azure Notebook, etc.)
  • Someone gave you an advice you liked? Test it - maybe the advice was actually bad.
  • Someone gave you an advice you think is bad? Test it before arguing - maybe it was good.
  • You posted a claim that something you did not test works? Be prepared to eat your hat.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  Split dict of lists into smaller dicts of lists. pcs3rd 3 2,373 Sep-19-2020, 09:12 AM
Last Post: ibreeden
  Adding markers to Folium map only adding last element. tantony 0 2,124 Oct-16-2019, 03:28 PM
Last Post: tantony
  adding lists to lists? ivinjjunior 5 3,065 Apr-15-2019, 07:41 PM
Last Post: ivinjjunior
  sort lists of lists with multiple criteria: similar values need to be treated equal stillsen 2 3,276 Mar-20-2019, 08:01 PM
Last Post: stillsen
  Help on adding two lists recursively Metalman488 3 4,179 Sep-16-2018, 08:10 PM
Last Post: Metalman488

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020