# How to Set Multiple Values of a List in Python

Published Oct 24, 2020  ∙  Updated May 2, 2022

Suppose we want to simultaneously set multiple elements of a Python list.

``````arr = [0, 0, 0, 0, 0]
``````

## Using a `for` Loop

We could very well use a conventional `for` loop.

``````for i in range(0, 3):
arr[i] = 1
# [1, 1, 1, 0, 0]
``````

## Using Slice Assignments

We can also assign a portion of the list to another list.

To obtain a portion of the list, we can use the slice operator.

``````arr[0:3] =  * 3
# [1, 1, 1, 0, 0]
arr[0:3] = [0 for i in range(3)]
# [0, 0, 0, 0, 0]
``````

### Check the Lengths!

Ensure that the length of both lists are equal, or we could end up in one of these situations.

``````arr[0:3] =  * 6
# [1, 1, 1, 1, 1, 1, 0, 0]
``````

The specified portion of the left-hand list will be replaced, but the remainder of the right-hand list will still be inserted.

## Watch Out for References

If we want to fill a list with objects, we can do so following the same method. However, these objects are populated in the list by reference.

``````obj = {'key': 1}
arr[0:3] = [obj] * 3
# [{'key': 1}, {'key': 1}, {'key': 1}, 0, 0]
arr['key'] = 5
# [{'key': 5}, {'key': 5}, {'key': 5}, 0, 0]
``````

We can bypass this complication by forcing a shallow copy of each object using the `copy()` method.

``````obj = {'key': 1}
arr[0:3] = [x.copy() for x in [obj] * 3]
arr['key'] = 5
# [{'key': 5}, {'key': 1}, {'key': 1}, 0, 0]
``````