Embaralhar Ordem de Lista em Python

Beginner

This tutorial is from open-source community. Access the source code

Introdução

Em Python, uma lista é uma coleção ordenada de itens. Às vezes, podemos querer randomizar a ordem dos itens em uma lista. Isso pode ser útil para jogos, simulações ou qualquer outra situação em que desejamos introduzir um elemento de aleatoriedade. Neste desafio, você escreverá uma função que embaralha os itens em uma lista.

Embaralhar Lista

Escreva uma função shuffle(lst) que recebe uma lista como entrada e retorna uma nova lista com os mesmos itens em uma ordem aleatória. Sua função deve usar o algoritmo Fisher-Yates para embaralhar os itens na lista.

O algoritmo Fisher-Yates funciona da seguinte forma:

  1. Comece com o último item da lista.
  2. Gere um índice aleatório entre 0 e o índice atual.
  3. Troque o item no índice atual com o item no índice aleatório.
  4. Vá para o próximo item na lista e repita os passos 2-3 até que todos os itens tenham sido embaralhados.

Sua função não deve modificar a lista original. Em vez disso, ela deve criar uma nova lista com os itens embaralhados.

Você pode assumir que a lista de entrada conterá pelo menos um item.

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
foo = [1, 2, 3]
shuffle(foo) ## [2, 3, 1], foo = [1, 2, 3]

Resumo

Neste desafio, você escreveu uma função que embaralha os itens em uma lista usando o algoritmo Fisher-Yates. Este algoritmo é uma maneira simples e eficiente de randomizar a ordem dos itens em uma lista. Ao completar este desafio, você adquiriu uma compreensão mais profunda de como as listas funcionam em Python e como manipulá-las usando funções.