33 lines
791 B
Markdown
33 lines
791 B
Markdown
---
|
|
title: Shuffle list
|
|
type: snippet
|
|
language: python
|
|
tags: [list,random]
|
|
cover: tent-stars
|
|
dateModified: 2020-11-02T19:28:35+02:00
|
|
---
|
|
|
|
Randomizes the order of the values of an list, returning a new list.
|
|
|
|
- Uses the [Fisher-Yates algorithm](https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle) to reorder the elements of the list.
|
|
- [`random.shuffle`](https://docs.python.org/3/library/random.html#random.shuffle) provides similar functionality to this snippet.
|
|
|
|
```py
|
|
from copy import deepcopy
|
|
from random import randint
|
|
|
|
def shuffle(lst):
|
|
temp_lst = deepcopy(lst)
|
|
m = len(temp_lst)
|
|
while (m):
|
|
m -= 1
|
|
i = randint(0, m)
|
|
temp_lst[m], temp_lst[i] = temp_lst[i], temp_lst[m]
|
|
return temp_lst
|
|
```
|
|
|
|
```py
|
|
foo = [1, 2, 3]
|
|
shuffle(foo) # [2, 3, 1], foo = [1, 2, 3]
|
|
```
|