Related Articles
Python List Slicing
• Difficulty Level : Basic
• Last Updated : 29 Oct, 2020

In Python, list slicing is a common practice and it is the most used technique for programmers to solve efficient problems. Consider a python list, In-order to access a range of elements in a list, you need to slice a list. One way to do this is to use the simple slicing operator i.e. colon(:)

With this operator, one can specify where to start the slicing, where to end, and specify the step. List slicing returns a new list from the existing list.

Syntax:

```Lst[ Initial : End : IndexJump ]
```

If Lst is a list, then the above expression returns the portion of the list from index Initial to index End, at a step size IndexJump.

### Indexing

1. Positive Indexes

Below is a simple program, to display a whole list using slicing.

## Python3

 `# Initialize list``Lst ``=` `[``50``, ``70``, ``30``, ``20``, ``90``, ``10``, ``50``]`` ` `# Display list``print``(Lst[::])`

Output:

```[50, 70, 30, 20, 90, 10, 50]
```

The above diagram illustrates a list Lst with its index values and elements.

2. Negative Indexes

Now, let us look at the below diagram which illustrates a list along with its negative indexes.

Index -1 represents the last element and -n represents the first element of the list(considering n as the length of the list). Lists can also be manipulated using negative indexes also.

## Python3

 `# Initialize list``Lst ``=` `[``50``, ``70``, ``30``, ``20``, ``90``, ``10``, ``50``]`` ` `# Display list``print``(Lst[``-``7``::``1``])`

Output:

```[50, 70, 30, 20, 90, 10, 50]
```

The above program displays the whole list using the negative index in list slicing.

3. Slicing

As mentioned earlier list slicing is a common practice in Python and can be used both with positive indexes as well as negative indexes. The below diagram illustrates the technique of list slicing:

The below program transforms the above illustration into python code:

## Python3

 `# Initialize list``Lst ``=` `[``50``, ``70``, ``30``, ``20``, ``90``, ``10``, ``50``]`` ` `# Display list``print``(Lst[``1``:``5``])`

Output:

`[70, 30, 20, 90]`

Below are some examples which depict the use of list slicing in Python:

Example 1:

## Python3

 `# Initialize list``List` `=` `[``1``, ``2``, ``3``, ``4``, ``5``, ``6``, ``7``, ``8``, ``9``]`` ` `# Show original list``print``(``"\nOriginal List:\n"``, ``List``)`` ` `print``(``"\nSliced Lists: "``)`` ` `# Display sliced list``print``(``List``[``3``:``9``:``2``])`` ` `# Display sliced list``print``(``List``[::``2``])`` ` `# Display sliced list``print``(``List``[::])`

Output:

```Original List:
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Sliced Lists:
[4, 6, 8]
[1, 3, 5, 7, 9]
[1, 2, 3, 4, 5, 6, 7, 8, 9]
```

Leaving any argument like Initial, End or IndexJump blank will lead to the use of default values i.e 0 as Initial, length of list as End and 1 as IndexJump.

Example 2:

## Python3

 `# Initialize list``List` `=` `[``'Geeks'``, ``4``, ``'geeks !'``]`` ` `# Show original list``print``(``"\nOriginal List:\n"``, ``List``)`` ` `print``(``"\nSliced Lists: "``)`` ` `# Display sliced list``print``(``List``[::``-``1``])`` ` `# Display sliced list``print``(``List``[::``-``3``])`` ` `# Display sliced list``print``(``List``[:``1``:``-``2``])`

Output:

```Original List:
['Geeks', 4, 'geeks !']

Sliced Lists:
['geeks !', 4, 'Geeks']
['geeks !']
['geeks !']
```

A reversed list can be generated by using a negative integer as the IndexJump argument. Leaving the Initial and End as blank. We need to choose the Intial and End value according to a reversed list if the IndexJump value is negative.

Example 3:

## Python3

 `# Initialize list``List` `=` `[``-``999``, ``'G4G'``, ``1706256``, ``'^_^'``, ``3.1496``]`` ` `# Show original list``print``(``"\nOriginal List:\n"``, ``List``)`` ` `print``(``"\nSliced Lists: "``)`` ` `# Display sliced list``print``(``List``[``10``::``2``])`` ` `# Display sliced list``print``(``List``[``1``:``1``:``1``])`` ` `# Display sliced list``print``(``List``[``-``1``:``-``1``:``-``1``])`` ` `# Display sliced list``print``(``List``[:``0``:])`

Output:

```Original List:
[-999, 'G4G', 1706256, '^_^', 3.1496]

Sliced Lists:
[]
[]
[]
[]
```

If some slicing expressions are made that do not make sense or are incomputable then empty lists are generated.

Example 4:

## Python3

 `# Initialize list``List` `=` `[``-``999``, ``'G4G'``, ``1706256``, ``3.1496``, ``'^_^'``]`` ` `# Show original list``print``(``"\nOriginal List:\n"``, ``List``)`` ` ` ` `print``(``"\nSliced Lists: "``)`` ` `# Modified List``List``[``2``:``4``] ``=` `[``'Geeks'``, ``'for'``, ``'Geeks'``, ``'!'``]`` ` `# Display sliced list``print``(``List``)`` ` `# Modified List``List``[:``6``] ``=` `[]`` ` `# Display sliced list``print``(``List``)`

Output:

```Original List:
[-999, 'G4G', 1706256, 3.1496, '^_^']

Sliced Lists:
[-999, 'G4G', 'Geeks', 'for', 'Geeks', '!', '^_^']
['^_^']
```

List slicing can be used to modify lists or even delete elements from a list.

Example 5:

## Python3

 `# Initialize list``List` `=` `[``1``, ``2``, ``3``, ``4``, ``5``, ``6``, ``7``, ``8``, ``9``]`` ` `# Show original list``print``(``"\nOriginal List:\n"``, ``List``)`` ` `print``(``"\nSliced Lists: "``)`` ` `# Creating new List``newList ``=` `List``[:``3``]``+``List``[``7``:]`` ` `# Display sliced list``print``(newList)`` ` `# Changng existing List``List` `=` `List``[::``2``]``+``List``[``1``::``2``]`` ` `# Display sliced list``print``(``List``)`

Output:

```Original List:
[1, 2, 3, 4, 5, 6, 7, 8, 9]

Sliced Lists:
[1, 2, 3, 8, 9]
[1, 3, 5, 7, 9, 2, 4, 6, 8]
```

By concatenating sliced lists, a new list can be created or even a pre-existing list can be modified.

Attention geek! Strengthen your foundations with the Python Programming Foundation Course and learn the basics.

To begin with, your interview preparations Enhance your Data Structures concepts with the Python DS Course.

My Personal Notes arrow_drop_up