Python

文字列シャッフルワンライナー

More than 3 years have passed since last update.

Python でのシャッフルは random.shuffle(list) でやりますが文字列でやろうとすると怒られるので一度 list(strings) しないといけなくて しかも None が返ってくるのでめちゃくちゃだるい!死んじゃう!となっていたのですが random.sample() を知ったので生きる!!となりました

random.sample() は対象からピックアップして任意の長さのリストを返してくれるので文字列で受け取る lambda expression にするとこんな感じ

Supercalifragilisticexpialidocious
Supercalifragilisticexpialidocious = lambda x: ''.join(random.sample(x ,len(x))

ワンライナー書くなら
s='strings';''.join(__import__('random').sample(s,len(s)));

>>> for _ in 'Supercalifragilisticexpialidocious':
...     print(Supercalifragilisticexpialidocious('Supercalifragilisticexpialidocious'))
...
euirfetxipsailigusodlrlcaiipciSaco
Sodirupiliasgsiurfolapicceexitailc
ooiiscxeiurialaaceldgprpfitiulcisS
igiSaclepilcespuairioxcloaustirdif
iclcfllguporastecSxipiierodaiiausi
Saticaausridlfeocolcilpiipigxureis
Siitreasieaailirloccgsofxluudciipp
iaceliufaStrgiuiroceaxlosppiilidsc
scarllreoiiscdoxtugepaiaSifiicupli
fcigellraoispSpcloexiuiiudistaraic
cgirSdllicsoipcliuispoirataexeufia
tiiuieiclgclSdiaoeplsaorucapsiifxr
pacliiirxslSliiasgieotuufiacdrpeoc
llfscuoiairairlpcopseiSxiiudtgcaie
tipoguaidlecliirosifSaciarpseuicxl
iiaptfusriplosciagcaluexiSicriodel
ioiaxSdlpracluptgcieusrilfiaiicsoe
Saitallirpiudxfusieooigraiseccicpl
opuiocSalscrldriieiisiuetxfgacilpa
aidocalirxitgSieoscliiuiecuarplpfs
prasiriileofxedlosaiacgSipculticui
ipillafcuoslircaeieiiuasitpoScgxrd
ispilpreafitxsuiglcooiuiSeaidrccla
uiipxfSilrsdipoaiirsilaclutecaogec
siaeplipfociSliaierrtlugcdoasxcuii
aisioepieifioxagSsicltcdrcullpiaur
coasSlarlgocauritsilciideuippfiiex
slpeacpicarldegrtxiSiiiisuialooucf
ilpclcsipuuSageaacrfdosiexiriiloit
xrpuoilsfaocaaSeritdlpgsiliuiiecic
ulixlStidaaicsirlsieceougfaciirpop
cgtieloiiSpaaiileaiuduoxcifcslprrs
cruapiorigcaisidpifecelllatusxSiio
liiuSectioixclsioiigpaasclureprfad