Skip to main content

How to Append to Lists in Python

Appending elements to lists is a fundamental operation in Python.

This guide explores various techniques for appending to lists, including conditional appends, handling None values, avoiding duplicates, and working with list comprehensions.

We'll focus on best practices for maintaining data integrity and writing efficient, readable code.

Appending to a List Conditionally (Checking for Duplicates)

To append a value to a list only if it's not already present, use the not in operator:

my_list = [1, 2, 3, 4, 5]
value = 6

if value not in my_list:
my_list.append(value)
else:
print('The specified value is already present in the list')

print(my_list) # Output: [1, 2, 3, 4, 5, 6]
  • value not in my_list checks for membership. This is efficient and readable.
  • my_list.append(value) adds the value to the end of the list only if it's not already present.

To check for multiple values, use a for loop and conditionally add them to the list:

new_list = []
list_of_values = [1, 1, 2, 2, 3, 3, 4, 4]
for item in list_of_values:
if item not in new_list:
new_list.append(item)
print(new_list) # Output: [1, 2, 3, 4]

Using Sets for Unique Values (Alternative to Conditional Appending)

If you always want to maintain a collection of unique values, and the order is not important, a set is a more efficient data structure than a list:

list_of_values = ['a', 'a', 'b', 'b', 'c', 'c']
my_set = list(set(list_of_values)) # Set will automatically remove the duplicates
print(my_set) # Output: ['b', 'c', 'a']
  • If the order of the elements does not matter, using set and list is the most efficient way to add values to a list and only preserve unique values, removing the duplicates.
my_set = set() # Create empty set

my_set.add(1) # Adding items to a set
my_set.add(1) # Adding a duplicate has no effect.
my_set.add(2)

print(my_set) # Output: {1, 2}
  • Adding duplicates to a set will not have any impact, as sets only store unique values.

Conditional Appending Based on a Condition

To append a value to a list based on a more general condition, use an if statement within a loop:

first_list = []
second_list = [-5, 7, 14, -2, 9, -29]

for item in second_list:
if item > 0:
first_list.append(item)
print(first_list) # Output: [7, 14, 9]
  • The code filters the negative values out, and only the positive integers are added to the first_list list.

You can also use elif and else to make more specific decisions about each element:

first_list = []
second_list = [-5, 7, 14, -2, 9, -29]

for item in second_list:
if item > 0:
first_list.append(item) # Append positive values
elif item < 0:
first_list.append(item * 2) # Double and append negative values
else:
first_list.append(1) # Append 1 for 0
print(first_list) # Output: [-10, 7, 14, -4, 9, -58]

Appending to a List Only if Not None

To prevent adding None values to your list, check for None explicitly using is not None:

my_list = []
value = 'apple'
if value is not None:
my_list.append(value)

print(my_list) # Output: ['apple']
  • The code checks if the variable value is None and appends to the list only if it is not.

Filtering out None from an existing list

If you have an existing list that might already contain None values, use a list comprehension to filter them out efficiently:

my_list = ['apple', None, 'banana', None]
new_list = [i for i in my_list if i is not None]
print(new_list) # Output: ['apple', 'banana']
  • List comprehension [i for i in my_list if i is not None] filters out None values in a single line.

Conclusion

This guide covered various scenarios involving appending to lists in Python.

  • You learned how to append only if a value isn't already present, how to use sets for unique values, and how to conditionally append based on arbitrary conditions, including checking for None.
  • You also saw how list comprehensions can make filtering lists more concise.

Understanding these techniques allows you to create robust and error-free list manipulation logic.