Përzier elementet në një listë në Python

biznes

Nëse dëshironi të përzieni (renditni rastësisht) elementët e një liste (vargu) në Python, përdorni modulin e rastësishëm të bibliotekës standarde.

Ekzistojnë dy funksione: shuffle(), e cila rendit në mënyrë të rastësishme listën origjinale, dhe sample(), e cila kthen një listë të re të renditur rastësisht. mostra () mund të përdoret për vargje dhe tuples.

  • Përzieni listën origjinale:random.shuffle()
  • Krijo një listë të re, të përzier.:random.sample()
  • Përzieni vargjet dhe tuplet
  • Rregulloni farën e numrave të rastësishëm

Nëse dëshironi të renditni në rend rritës ose zbritës në vend të rastit, ose në rend të kundërt, shihni artikullin vijues.

Përzieni listën origjinale:random.shuffle()

Funksioni shuffle() në modulin e rastësishëm mund të renditë rastësisht listën origjinale.

import random

l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]

random.shuffle(l)
print(l)
# [1, 0, 4, 3, 2]

Krijo një listë të re, të përzier.:random.sample()

Funksioni mostër () në modulin e rastësishëm mund të përdoret për të krijuar një listë të re që renditet rastësisht, pa ndryshuar listën origjinale.

mostra () është një funksion që zgjedh dhe merr në mënyrë të rastësishme një element nga një listë. Argumenti i parë është një listë, dhe argumenti i dytë është numri i elementeve që duhet të merren. Shihni artikullin e mëposhtëm për detaje.

Nëse numri i elementeve që do të zgjidhen nga mostra() është numri total i elementeve në listë, ne marrim një listë të re me të gjithë elementët të renditur rastësisht. Numri i përgjithshëm i elementeve në listë merret nga len().

Objekti origjinal nuk do të ndryshohet.

l = list(range(5))
print(l)
# [0, 1, 2, 3, 4]

lr = random.sample(l, len(l))
print(lr)
# [0, 3, 1, 4, 2]

print(l)
# [0, 1, 2, 3, 4]

Përzieni vargjet dhe tuplet

Vargjet dhe tuplet janë të pandryshueshëm, kështu që nëse përdorni random.shuffle() për të ndryshuar objektin origjinal, do të merrni gabimin e mëposhtëm.
TypeError

s = 'abcde'

# random.shuffle(s)
# TypeError: 'str' object does not support item assignment

t = tuple(range(5))
print(t)
# (0, 1, 2, 3, 4)

# random.shuffle(t)
# TypeError: 'tuple' object does not support item assignment

Nëse dëshironi të përzieni një varg ose tuple, përdorni random.sample(), i cili krijon një objekt të ri.

Edhe kur një varg ose tuple specifikohet si argument, random.sample() kthen një listë, kështu që është e nevojshme ta përpunoni atë përsëri në një varg ose tuple.

Në rastin e një vargu, do të jetë një listë karakteresh një nga një. Për t’i bashkuar përsëri në një varg të vetëm, përdorni metodën join().

sr = ''.join(random.sample(s, len(s)))
print(sr)
# bedca

Për tuples, përdorni tuple(), e cila krijon një tuple nga një listë.

tr = tuple(random.sample(t, len(l)))
print(tr)
# (0, 1, 2, 4, 3)

Rregulloni farën e numrave të rastësishëm

Duke i dhënë një numër të plotë arbitrar funksionit seed() të modulit të rastësishëm, fara e numrave të rastësishëm mund të fiksohet dhe gjeneratori i numrave të rastësishëm mund të inicializohet.

Pas inicializimit me të njëjtën farë, ajo rirenditet gjithmonë në të njëjtën mënyrë.

l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]

l = list(range(5))
random.seed(0)
random.shuffle(l)
print(l)
# [2, 1, 0, 4, 3]
Copied title and URL