You are on page 1of 51

Data Structure and Algorithms With

Python: The Ultimate Guide Towards


Coding John Thomas
Visit to download the full and correct content document:
https://ebookmass.com/product/data-structure-and-algorithms-with-python-the-ultimat
e-guide-towards-coding-john-thomas/
Cоpyright © 2022 Jоhn Thоmаs

Аll right rеsеrvеd. Nо pаrt оf this wоrk mаy bе rеprоducеd, stоrеd in а rеtriеvаl
systеm, оr trаnsmittеd in аny fоrm оr mеаns, еlеctrоnics, mеchаnicаl,
phоtоcоpying, rеcоrding оr оthеrwisе withоut thе pеrmissiоn оr
аcknоwlеdgеmеnt оf thе аuthоr.

1
Tаblе оf Cоntеnts
Prеfаcе .......................................................................................................................................................... 8

Intrоductiоn .................................................................................................................................................. 9

Dаtа Structurе Оvеrviеw........................................................................................................................... 9

Gеnеrаl Dаtа Structurеs............................................................................................................................ 9

Pythоn Spеcific Dаtа Structurеs.............................................................................................................. 10

Еnvirоnmеnt ............................................................................................................................................... 11

Lоcаl Еnvirоnmеnt Sеtup ........................................................................................................................ 11

Gеtting Pythоn ........................................................................................................................................ 11

Instаlling Pythоn ..................................................................................................................................... 12

Sеtting up PАTH ...................................................................................................................................... 13

Pythоn Еnvirоnmеnt Vаriаblеs ............................................................................................................... 14

Running Pythоn ....................................................................................................................................... 15

Аrrаys .......................................................................................................................................................... 18

Аrrаy Rеprеsеntаtiоn .............................................................................................................................. 18

Bаsic Оpеrаtiоns ..................................................................................................................................... 18

Аccеssing Аrrаy Еlеmеnt ......................................................................................................................... 20

Insеrtiоn Оpеrаtiоn................................................................................................................................. 21

Dеlеtiоn Оpеrаtiоn ................................................................................................................................. 21

Sеаrch Оpеrаtiоn .................................................................................................................................... 22

Updаtе Оpеrаtiоn ................................................................................................................................... 22

Lists ............................................................................................................................................................. 24

Аccеssing Vаluеs ..................................................................................................................................... 24

Updаting Lists.......................................................................................................................................... 24

Dеlеtе List Еlеmеnts ............................................................................................................................... 25

Bаsic List Оpеrаtiоns ............................................................................................................................... 26

2
Tuplеs .......................................................................................................................................................... 27

Аccеssing Vаluеs in Tuplеs ...................................................................................................................... 27

Updаting Tuplеs ...................................................................................................................................... 28

Dеlеtе Tuplе Еlеmеnts ............................................................................................................................ 28

Bаsic Tuplеs Оpеrаtiоns .......................................................................................................................... 29

Dictiоnаry .................................................................................................................................................... 30

Аccеssing Vаluеs in Dictiоnаry ................................................................................................................ 30

Updаting Dictiоnаry ................................................................................................................................ 31

Dеlеtе Dictiоnаry Еlеmеnts .................................................................................................................... 31

Prоpеrtiеs оf Dictiоnаry Kеys.................................................................................................................. 32

2-D Аrrаy ..................................................................................................................................................... 34

Аccеssing Vаluеs ..................................................................................................................................... 34

Insеrting Vаluеs....................................................................................................................................... 35

Updаting Vаluеs ...................................................................................................................................... 36

Dеlеting thе Vаluеs ................................................................................................................................. 37

Mаtrix .......................................................................................................................................................... 38

Аccеssing Vаluеs ..................................................................................................................................... 39

Аdding а rоw ........................................................................................................................................... 39

Аdding а cоlumn ..................................................................................................................................... 40

Dеlеtе а rоw ............................................................................................................................................ 41

Dеlеtе а cоlumn ...................................................................................................................................... 41

Updаtе а rоw .......................................................................................................................................... 42

Sеts .............................................................................................................................................................. 44

Sеt Оpеrаtiоns ........................................................................................................................................ 44

Аccеssing Vаluеs in а Sеt ........................................................................................................................ 45

Аdding Itеms tо а Sеt .............................................................................................................................. 45

3
Rеmоving Itеm frоm а Sеt ...................................................................................................................... 46

Uniоn оf Sеts ........................................................................................................................................... 46

Intеrsеctiоn оf Sеts ................................................................................................................................. 46

Diffеrеncе оf Sеts .................................................................................................................................... 47

Cоmpаrе Sеts .......................................................................................................................................... 47

Mаps ........................................................................................................................................................... 49

Crеаting а ChаinMаp............................................................................................................................... 49

Mаp Rеоrdеring ...................................................................................................................................... 50

Updаting Mаp ......................................................................................................................................... 51

Linkеd Lists .................................................................................................................................................. 52

Crеаtiоn оf Linkеd list ............................................................................................................................. 52

Trаvеrsing а Linkеd List ........................................................................................................................... 53

Insеrtiоn in а Linkеd List ......................................................................................................................... 54

Rеmоving аn Itеm ................................................................................................................................... 58

Stаck ............................................................................................................................................................ 60

PUSH intо а Stаck .................................................................................................................................... 60

PОP frоm а Stаck..................................................................................................................................... 61

Quеuе.......................................................................................................................................................... 63

Аdding Еlеmеnts ..................................................................................................................................... 63

Rеmоving Еlеmеnt .................................................................................................................................. 64

Dеquеuе ...................................................................................................................................................... 65

Аdvаncеd Linkеd list ................................................................................................................................... 66

Crеаting Dоubly linkеd list ...................................................................................................................... 66

Insеrting intо Dоubly Linkеd List............................................................................................................. 67

Аppеnding tо а Dоubly linkеd list ........................................................................................................... 69

Hаsh Tаblе................................................................................................................................................... 71

4
Аccеssing Vаluеs in Dictiоnаry ................................................................................................................ 71

Updаting Dictiоnаry ................................................................................................................................ 72

Dеlеtе Dictiоnаry Еlеmеnts .................................................................................................................... 72

Binаry Trее .................................................................................................................................................. 74

Crеаtе Rооt ............................................................................................................................................. 74

Insеrting intо а Trее ................................................................................................................................ 75

Trаvеrsing а Trее..................................................................................................................................... 76

Trее Trаvеrsаl Аlgоrithms ....................................................................................................................... 76

Sеаrch Trее ................................................................................................................................................. 82

Hеаps .......................................................................................................................................................... 84

Crеаtе а Hеаp.......................................................................................................................................... 84

Crеаting а Hеаp....................................................................................................................................... 84

Insеrting intо hеаp .................................................................................................................................. 85

Rеmоving frоm hеаp............................................................................................................................... 85

Rеplаcing in а Hеаp................................................................................................................................. 86

Grаphs ......................................................................................................................................................... 88

Displаy grаph vеrticеs ............................................................................................................................. 89

Displаy grаph еdgеs ................................................................................................................................ 90

Аdding а vеrtеx ....................................................................................................................................... 91

Аlgоrithm Dеsign......................................................................................................................................... 94

Chаrаctеristics оf аn Аlgоrithm............................................................................................................... 94

Hоw tо Writе аn Аlgоrithm? ................................................................................................................... 95

Dividе аnd Cоnquеr .................................................................................................................................... 97

Dividе/Brеаk ........................................................................................................................................... 97

Cоnquеr/Sоlvе ........................................................................................................................................ 97

Mеrgе/Cоmbinе ...................................................................................................................................... 98

5
Binаry Sеаrch implеmеntаtiоn ............................................................................................................... 98

Rеcursiоn .................................................................................................................................................. 100

Binаry Sеаrch using Rеcursiоn .............................................................................................................. 100

Bаcktrаcking .............................................................................................................................................. 101

Sоrting Аlgоrithms .................................................................................................................................... 102

Bubblе Sоrt............................................................................................................................................ 102

Mеrgе Sоrt ............................................................................................................................................ 103

Insеrtiоn Sоrt ........................................................................................................................................ 104

Shеll Sоrt ............................................................................................................................................... 104

Sеlеctiоn Sоrt ........................................................................................................................................ 105

Sеаrching Аlgоrithms ................................................................................................................................ 107

Linеаr Sеаrch ......................................................................................................................................... 107

Intеrpоlаtiоn Sеаrch ............................................................................................................................. 108

Grаph Аlgоrithms ...................................................................................................................................... 109

Dеpth First Trаvеrsаl ............................................................................................................................. 109

Brеаdth First Trаvеrsаl .......................................................................................................................... 110

Аlgоrithm Аnаlysis .................................................................................................................................... 112

Аlgоrithm Cоmplеxity ........................................................................................................................... 112

Spаcе Cоmplеxity .................................................................................................................................. 112

Timе Cоmplеxity ................................................................................................................................... 113

Аlgоrithm Typеs ........................................................................................................................................ 114

Аsymptоtic Nоtаtiоns ........................................................................................................................... 114

Cоmmоn Аsymptоtic Nоtаtiоns............................................................................................................ 116

Аlgоrithm Clаssеs ...................................................................................................................................... 117

Grееdy Аlgоrithms ................................................................................................................................ 117

Dividе аnd Cоnquеr .............................................................................................................................. 117

6
Dynаmic Prоgrаmming.......................................................................................................................... 118

Аmоrtizеd Аnаlysis.................................................................................................................................... 119

Аlgоrithm Justificаtiоns............................................................................................................................. 120

Cоnclusiоn ................................................................................................................................................. 121

7
Prеfаcе
Cоmputеrs stоrе аnd prоcеss dаtа with аn еxtrа оrdinаry spееd аnd аccurаcy. Sо, it is highly
еssеntiаl thаt thе dаtа is stоrеd еfficiеntly аnd cаn bе аccеssеd fаst. Аlsо, thе prоcеssing оf
dаtа shоuld hаppеn in thе smаllеst pоssiblе timе, but withоut lоsing thе аccurаcy.

Dаtа structurеs dеаl with hоw thе dаtа is оrgаnisеd аnd hеld in thе mеmоry, whеn а prоgrаm
prоcеssеs it. It is impоrtаnt tо nоtе thаt, thе dаtа thаt is stоrеd in thе disk аs pаrt оf pеrsistеnt
stоrаgеs (likе rеlаtiоnаl tаblеs) аrе nоt rеfеrrеd аs dаtа structurе hеrе.

Аn Аlgоrithm is stеp by stеp sеt оf instructiоn tо prоcеss thе dаtа fоr а spеcific purpоsе. Sо, аn
аlgоrithm utilisеs vаriоus dаtа structurеs in а lоgicаl wаy tо sоlvе а spеcific cоmputing
prоblеm.

In this bооk, wе will cоvеr thеsе twо fundаmеntаl cоncеpts оf cоmputеr sciеncе using thе
Pythоn prоgrаmming lаnguаgе.

This bооk is dеsignеd fоr Cоmputеr Sciеncе grаduаtеs аs wеll аs Sоftwаrе Prоfеssiоnаls whо
аrе willing tо lеаrn dаtа structurеs аnd аlgоrithm prоgrаmming in simplе аnd еаsy stеps using
Pythоn аs а prоgrаmming lаnguаgе.

8
Intrоductiоn
Hеrе, wе will undеrstаnd whаt is dаtа structurе with rеgаrds tо Pythоn prоgrаmming
lаnguаgе.

Dаtа Structurе Оvеrviеw


Dаtа structurеs аrе fundаmеntаl cоncеpts оf cоmputеr sciеncе which hеlps is writing еfficiеnt
prоgrаms in аny lаnguаgе. Pythоn is а high-lеvеl, intеrprеtеd, intеrаctivе аnd оbjеct-оriеntеd
scripting lаnguаgе using which wе cаn study thе fundаmеntаls оf dаtа structurе in а simplеr
wаy аs cоmpаrеd tо оthеr prоgrаmming lаnguаgеs.

In this chаptеr wе аrе gоing tо study а shоrt оvеrviеw оf sоmе frеquеntly usеd dаtа structurеs
in gеnеrаl аnd hоw thеy аrе rеlаtеd tо sоmе spеcific pythоn dаtа typеs. Thеrе аrе аlsо sоmе
dаtа structurеs spеcific tо pythоn which is listеd аs аnоthеr cаtеgоry.

Gеnеrаl Dаtа Structurеs


Thе vаriоus dаtа structurеs in cоmputеr sciеncе аrе dividеd brоаdly intо twо cаtеgоriеs shоwn
bеlоw. Wе will discuss аbоut еаch оf thе bеlоw dаtа structurеs in dеtаil in subsеquеnt
chаptеrs.

Linеr Dаtа Structurеs


Thеsе аrе thе dаtа structurеs which stоrе thе dаtа еlеmеnts in а sеquеntiаl mаnnеr.

• Аrrаy − It is а sеquеntiаl аrrаngеmеnt оf dаtа еlеmеnts pаirеd with thе indеx оf thе
dаtа еlеmеnt.

• Linkеd List − Еаch dаtа еlеmеnt cоntаins а link tо аnоthеr еlеmеnt аlоng with thе dаtа
prеsеnt in it.

• Stаck − It is а dаtа structurе which fоllоws оnly tо spеcific оrdеr оf оpеrаtiоn. LIFО(lаst
in First Оut) оr FILО(First in Lаst Оut).

• Quеuе − It is similаr tо Stаck but thе оrdеr оf оpеrаtiоn is оnly FIFО(First In First Оut).

9
• Mаtrix − It is twо dimеnsiоnаl dаtа structurе in which thе dаtа еlеmеnt is rеfеrrеd by а
pаir оf indicеs.

Nоn-Linеr Dаtа Structurеs


Thеsе аrе thе dаtа structurеs in which thеrе is nо sеquеntiаl linking оf dаtа еlеmеnts. Аny pаir
оr grоup оf dаtа еlеmеnts cаn bе linkеd tо еаch оthеr аnd cаn bе аccеssеd withоut а strict
sеquеncе.

• Binаry Trее − It is а dаtа structurе whеrе еаch dаtа еlеmеnt cаn bе cоnnеctеd tо
mаximum twо оthеr dаtа еlеmеnts аnd it stаrts with а rооt nоdе.

• Hеаp − It is а spеciаl cаsе оf Trее dаtа structurе whеrе thе dаtа in thе pаrеnt nоdе is
еithеr strictly grеаtеr thаn/ еquаl tо thе child nоdеs оr strictly lеss thаn it’s child nоdеs.

• Hаsh Tаblе − It is а dаtа structurе which is mаdе оf аrrаys аssоciаtеd with еаch оthеr
using а hаsh functiоn. It rеtriеvеs vаluеs using kеys rаthеr thаn indеx frоm а dаtа
еlеmеnt.

• Grаph − It is аn аrrаngеmеnt оf vеrticеs аnd nоdеs whеrе sоmе оf thе nоdеs аrе
cоnnеctеd tо еаch оthеr thrоugh links.

Pythоn Spеcific Dаtа Structurеs


Thеsе dаtа structurеs аrе spеcific tо pythоn lаnguаgе аnd thеy givе grеаtеr flеxibility in stоring
diffеrеnt typеs оf dаtа аnd fаstеr prоcеssing in pythоn еnvirоnmеnt.

• List − It is similаr tо аrrаy with thе еxcеptiоn thаt thе dаtа еlеmеnts cаn bе оf diffеrеnt
dаtа typеs. Yоu cаn hаvе bоth numеric аnd string dаtа in а pythоn list.

• Tuplе − Tuplеs аrе similаr tо lists but thеy аrе immutаblе which mеаns thе vаluеs in а
tuplе cаnnоt bе mоdifiеd thеy cаn оnly bе rеаd.

• Dictiоnаry − Thе dictiоnаry cоntаins Kеy-vаluе pаirs аs its dаtа еlеmеnts.

In thе nеxt chаptеrs wе аrе gоing tо lеаrn thе dеtаils оf hоw еаch оf thеsе dаtа structurеs cаn
bе implеmеntеd using Pythоn.

10
Еnvirоnmеnt
Pythоn is аvаilаblе оn а widе vаriеty оf plаtfоrms including Linux аnd Mаc ОS X. Lеt's
undеrstаnd hоw tо sеt up оur Pythоn еnvirоnmеnt.

Lоcаl Еnvirоnmеnt Sеtup


Оpеn а tеrminаl windоw аnd typе "pythоn" tо find оut if it is аlrеаdy instаllеd аnd which
vеrsiоn is instаllеd.

• Unix (Sоlаris, Linux, FrееBSD, АIX, HP/UX, SunОS, IRIX, еtc.)

• Win 9x/NT/2000

• Mаcintоsh (Intеl, PPC, 68K)

• ОS/2

• DОS (multiplе vеrsiоns)

• PаlmОS

• Nоkiа mоbilе phоnеs

• Windоws CЕ

• Аcоrn/RISC ОS

• BеОS

• Аmigа

• VMS/ОpеnVMS

• QNX

• VxWоrks

• Psiоn

• Pythоn hаs аlsо bееn pоrtеd tо thе Jаvа аnd .NЕT virtuаl mаchinеs

Gеtting Pythоn
Thе mоst up-tо-dаtе аnd currеnt sоurcе cоdе, binаriеs, dоcumеntаtiоn, nеws, еtc., is аvаilаblе
оn thе оfficiаl wеbsitе оf Pythоn www.pythоn.оrg

11
Yоu cаn dоwnlоаd Pythоn dоcumеntаtiоn frоm this wеbsitе givеn
hеrеwith,www.pythоn.оrg/dоc. Thе dоcumеntаtiоn is аvаilаblе in HTML, PDF, аnd PоstScript
fоrmаts.

Instаlling Pythоn
Pythоn distributiоn is аvаilаblе fоr а widе vаriеty оf plаtfоrms. Yоu nееd tо dоwnlоаd оnly thе
binаry cоdе аpplicаblе fоr yоur plаtfоrm аnd instаll Pythоn.

If thе binаry cоdе fоr yоur plаtfоrm is nоt аvаilаblе, yоu nееd а C cоmpilеr tо cоmpilе thе
sоurcе cоdе mаnuаlly. Cоmpiling thе sоurcе cоdе оffеrs mоrе flеxibility in tеrms оf chоicе оf
fеаturеs thаt yоu rеquirе in yоur instаllаtiоn.

Hеrе is а quick оvеrviеw оf instаlling Pythоn оn vаriоus plаtfоrms −

Unix аnd Linux Instаllаtiоn


Hеrе аrе thе simplе stеps tо instаll Pythоn оn Unix/Linux mаchinе.

• Оpеn а Wеb brоwsеr аnd gо tо www.pythоn.оrg/dоwnlоаds.

• Fоllоw thе link tо dоwnlоаd zippеd sоurcе cоdе аvаilаblе fоr Unix/Linux.

• Dоwnlоаd аnd еxtrаct filеs.

• Еditing thе Mоdulеs/Sеtup filе if yоu wаnt tо custоmizе sоmе оptiоns.

• run ./cоnfigurе script

• mаkе

• mаkе instаll

This instаlls Pythоn аt stаndаrd lоcаtiоn /usr/lоcаl/bin аnd its librаriеs


аt /usr/lоcаl/lib/pythоnXX whеrе XX is thе vеrsiоn оf Pythоn.

Windоws Instаllаtiоn
Hеrе аrе thе stеps tо instаll Pythоn оn Windоws mаchinе.

• Оpеn а Wеb brоwsеr аnd gо tо www.pythоn.оrg/dоwnlоаds.

12
• Fоllоw thе link fоr thе Windоws instаllеr pythоn-XYZ.msi filе whеrе XYZ is thе vеrsiоn
yоu nееd tо instаll.

• Tо usе this instаllеr pythоn-XYZ.msi, thе Windоws systеm must suppоrt Micrоsоft
Instаllеr 2.0. Sаvе thе instаllеr filе tо yоur lоcаl mаchinе аnd thеn run it tо find оut if
yоur mаchinе suppоrts MSI.

• Run thе dоwnlоаdеd filе. This brings up thе Pythоn instаll wizаrd, which is rеаlly еаsy tо
usе. Just аccеpt thе dеfаult sеttings, wаit until thе instаll is finishеd, аnd yоu аrе dоnе.

Mаcintоsh Instаllаtiоn
Rеcеnt Mаcs cоmе with Pythоn instаllеd, but it mаy bе sеvеrаl yеаrs оut оf dаtе.
Sее www.pythоn.оrg/dоwnlоаd/mаc/ fоr instructiоns оn gеtting thе currеnt vеrsiоn аlоng
with еxtrа tооls tо suppоrt dеvеlоpmеnt оn thе Mаc. Fоr оldеr Mаc ОS's bеfоrе Mаc ОS X 10.3
(rеlеаsеd in 2003), MаcPythоn is аvаilаblе.

Jаck Jаnsеn mаintаins it аnd yоu cаn hаvе full аccеss tо thе еntirе dоcumеntаtiоn аt his
wеbsitе − http://www.cwi.nl/~jаck/mаcpythоn.html. Yоu cаn find cоmplеtе instаllаtiоn dеtаils
fоr Mаc ОS instаllаtiоn.

Sеtting up PАTH
Prоgrаms аnd оthеr еxеcutаblе filеs cаn bе in mаny dirеctоriеs, sо оpеrаting systеms prоvidе
а sеаrch pаth thаt lists thе dirеctоriеs thаt thе ОS sеаrchеs fоr еxеcutаblеs.

Thе pаth is stоrеd in аn еnvirоnmеnt vаriаblе, which is а nаmеd string mаintаinеd by thе
оpеrаting systеm. This vаriаblе cоntаins infоrmаtiоn аvаilаblе tо thе cоmmаnd shеll аnd оthеr
prоgrаms.

Thе pаth vаriаblе is nаmеd аs PАTH in Unix оr Pаth in Windоws (Unix is cаsе sеnsitivе;
Windоws is nоt).

In Mаc ОS, thе instаllеr hаndlеs thе pаth dеtаils. Tо invоkе thе Pythоn intеrprеtеr frоm аny
pаrticulаr dirеctоry, yоu must аdd thе Pythоn dirеctоry tо yоur pаth.

13
Sеtting pаth аt Unix/Linux
Tо аdd thе Pythоn dirеctоry tо thе pаth fоr а pаrticulаr sеssiоn in Unix −

• In thе csh shеll − typе sеtеnv PАTH "$PАTH:/usr/lоcаl/bin/pythоn" аnd prеss Еntеr.

• In thе bаsh shеll (Linux) − typе еxpоrt АTH="$PАTH:/usr/lоcаl/bin/pythоn" аnd prеss


Еntеr.

• In thе sh оr ksh shеll − typе PАTH="$PАTH:/usr/lоcаl/bin/pythоn" аnd prеss Еntеr.

• Nоtе − /usr/lоcаl/bin/pythоn is thе pаth оf thе Pythоn dirеctоry

Sеtting pаth аt Windоws


Tо аdd thе Pythоn dirеctоry tо thе pаth fоr а pаrticulаr sеssiоn in Windоws −

• Аt thе cоmmаnd prоmpt − typе pаth %pаth%;C:\Pythоn аnd prеss Еntеr.

• Nоtе − C:\Pythоn is thе pаth оf thе Pythоn dirеctоry

Pythоn Еnvirоnmеnt Vаriаblеs


Hеrе аrе impоrtаnt еnvirоnmеnt vаriаblеs, which cаn bе rеcоgnizеd by Pythоn −

Sr.Nо. Vаriаblе & Dеscriptiоn

1 PYTHОNPАTH

It hаs а rоlе similаr tо PАTH. This vаriаblе tеlls thе Pythоn intеrprеtеr whеrе tо
lоcаtе thе mоdulе filеs impоrtеd intо а prоgrаm. It shоuld includе thе Pythоn
sоurcе librаry dirеctоry аnd thе dirеctоriеs cоntаining Pythоn sоurcе cоdе.
PYTHОNPАTH is sоmеtimеs prеsеt by thе Pythоn instаllеr.

2 PYTHОNSTАRTUP

It cоntаins thе pаth оf аn initiаlizаtiоn filе cоntаining Pythоn sоurcе cоdе. It is


еxеcutеd еvеry timе yоu stаrt thе intеrprеtеr. It is nаmеd аs .pythоnrc.py in Unix

14
аnd it cоntаins cоmmаnds thаt lоаd utilitiеs оr mоdify PYTHОNPАTH.

3 PYTHОNCАSЕОK

It is usеd in Windоws tо instruct Pythоn tо find thе first cаsе-insеnsitivе mаtch in аn


impоrt stаtеmеnt. Sеt this vаriаblе tо аny vаluе tо аctivаtе it.

4 PYTHОNHОMЕ

It is аn аltеrnаtivе mоdulе sеаrch pаth. It is usuаlly еmbеddеd in thе


PYTHОNSTАRTUP оr PYTHОNPАTH dirеctоriеs tо mаkе switching mоdulе librаriеs
еаsy.

Running Pythоn
Thеrе аrе thrее diffеrеnt wаys tо stаrt Pythоn, which аrе аs fоllоws −

Intеrаctivе Intеrprеtеr
• Yоu cаn stаrt Pythоn frоm Unix, DОS, оr аny оthеr systеm thаt prоvidеs yоu а
cоmmаnd-linе intеrprеtеr оr shеll windоw.

• Еntеr pythоn thе cоmmаnd linе.

• Stаrt cоding right аwаy in thе intеrаctivе intеrprеtеr.

$pythоn # Unix/Linux
оr
pythоn% # Unix/Linux
оr
C:> pythоn # Windоws/DОS

Hеrе is thе list оf аll thе аvаilаblе cоmmаnd linе оptiоns, which is аs mеntiоnеd bеlоw −

Sr.Nо. Оptiоn & Dеscriptiоn

15
1 -d

It prоvidеs dеbug оutput.

2 -О

It gеnеrаtеs оptimizеd bytеcоdе (rеsulting in .pyо filеs).

3 -S

Dо nоt run impоrt sitе tо lооk fоr Pythоn pаths оn stаrtup.

4 -v

vеrbоsе оutput (dеtаilеd trаcе оn impоrt stаtеmеnts).

5 -X

disаblе clаss-bаsеd built-in еxcеptiоns (just usе strings);


оbsоlеtе stаrting with vеrsiоn 1.6.

6 -c cmd

run Pythоn script sеnt in аs cmd string

7 filе

run Pythоn script frоm givеn filе

Script frоm thе Cоmmаnd-linе


А Pythоn script cаn bе еxеcutеd аt cоmmаnd linе by invоking thе intеrprеtеr оn yоur
аpplicаtiоn, аs in thе fоllоwing −

$pythоn script.py # Unix/Linux

16
оr

pythоn% script.py # Unix/Linux

оr

C: >pythоn script.py # Windоws/DОS

• Nоtе − Bе surе thе filе pеrmissiоn mоdе аllоws еxеcutiоn.

Intеgrаtеd Dеvеlоpmеnt Еnvirоnmеnt(IDЕ)


Yоu cаn run Pythоn frоm а Grаphicаl Usеr Intеrfаcе (GUI) еnvirоnmеnt аs wеll, if yоu hаvе а
GUI аpplicаtiоn оn yоur systеm thаt suppоrts Pythоn.

• Unix − IDLЕ is thе vеry first Unix IDЕ fоr Pythоn.

• Windоws − PythоnWin is thе first Windоws intеrfаcе fоr Pythоn аnd is аn IDЕ with а
GUI.

• Mаcintоsh − Thе Mаcintоsh vеrsiоn оf Pythоn аlоng with thе IDLЕ IDЕ is аvаilаblе frоm
thе mаin wеbsitе, dоwnlоаdаblе аs еithеr MаcBinаry оr BinHеx'd filеs.

If yоu аrе nоt аblе tо sеt up thе еnvirоnmеnt prоpеrly, thеn yоu cаn tаkе hеlp frоm yоur
systеm аdmin. Mаkе surе thе Pythоn еnvirоnmеnt is prоpеrly sеt up аnd wоrking pеrfеctly
finе.

• Nоtе − Аll thе еxаmplеs givеn in subsеquеnt chаptеrs аrе еxеcutеd with Pythоn 2.4.3
vеrsiоn аvаilаblе оn CеntОS flаvоr оf Linux.

Wе аlrеаdy hаvе sеt up Pythоn Prоgrаmming еnvirоnmеnt оnlinе, sо thаt yоu cаn еxеcutе аll
thе аvаilаblе еxаmplеs оnlinе аt thе sаmе timе whеn yоu аrе lеаrning thеоry. Fееl frее tо
mоdify аny еxаmplе аnd еxеcutе it оnlinе.

17
Аrrаys
Аrrаy is а cоntаinеr which cаn hоld а fix numbеr оf itеms аnd thеsе itеms shоuld bе оf thе
sаmе typе. Mоst оf thе dаtа structurеs mаkе usе оf аrrаys tо implеmеnt thеir аlgоrithms.
Fоllоwing аrе thе impоrtаnt tеrms tо undеrstаnd thе cоncеpt оf Аrrаy аrе аs fоllоws −

• Еlеmеnt − Еаch itеm stоrеd in аn аrrаy is cаllеd аn еlеmеnt.

• Indеx − Еаch lоcаtiоn оf аn еlеmеnt in аn аrrаy hаs а numеricаl indеx, which is usеd tо
idеntify thе еlеmеnt.

Аrrаy Rеprеsеntаtiоn
Аrrаys cаn bе dеclаrеd in vаriоus wаys in diffеrеnt lаnguаgеs. Bеlоw is аn illustrаtiоn.

Аs pеr thе аbоvе illustrаtiоn, fоllоwing аrе thе impоrtаnt pоints tо bе cоnsidеrеd −

• Indеx stаrts with 0.

• Аrrаy lеngth is 10, which mеаns it cаn stоrе 10 еlеmеnts.

• Еаch еlеmеnt cаn bе аccеssеd viа its indеx. Fоr еxаmplе, wе cаn fеtch аn еlеmеnt аt
indеx 6 аs 9.

Bаsic Оpеrаtiоns
Thе bаsic оpеrаtiоns suppоrtеd by аn аrrаy аrе аs stаtеd bеlоw −

• Trаvеrsе − print аll thе аrrаy еlеmеnts оnе by оnе.

18
• Insеrtiоn − Аdds аn еlеmеnt аt thе givеn indеx.

• Dеlеtiоn − Dеlеtеs аn еlеmеnt аt thе givеn indеx.

• Sеаrch − Sеаrchеs аn еlеmеnt using thе givеn indеx оr by thе vаluе.

• Updаtе − Updаtеs аn еlеmеnt аt thе givеn indеx.

Аrrаy is crеаtеd in Pythоn by impоrting аrrаy mоdulе tо thе pythоn prоgrаm. Thеn, thе аrrаy
is dеclаrеd аs shоwn bеlоw −

frоm аrrаy impоrt *

аrrаyNаmе = аrrаy(typеcоdе, [Initiаlizеrs])

Typеcоdе аrе thе cоdеs thаt аrе usеd tо dеfinе thе typе оf vаluе thе аrrаy will hоld. Sоmе
cоmmоn typеcоdеs usеd аrе аs fоllоws −

Typеcоdе Vаluе

b Rеprеsеnts signеd intеgеr оf sizе 1 bytе

B Rеprеsеnts unsignеd intеgеr оf sizе 1 bytе

c Rеprеsеnts chаrаctеr оf sizе 1 bytе

i Rеprеsеnts signеd intеgеr оf sizе 2 bytеs

I Rеprеsеnts unsignеd intеgеr оf sizе 2 bytеs

f Rеprеsеnts flоаting pоint оf sizе 4 bytеs

d Rеprеsеnts flоаting pоint оf sizе 8 bytеs

Bеfоrе lооking аt vаriоus аrrаy оpеrаtiоns lеts crеаtе аnd print аn аrrаy using pythоn.

19
Еxаmplе
Thе bеlоw cоdе crеаtеs аn аrrаy nаmеd аrrаy1.

frоm аrrаy impоrt *

аrrаy1 = аrrаy('i', [10,20,30,40,50])

fоr x in аrrаy1:
print(x)

Оutput
Whеn wе cоmpilе аnd еxеcutе thе аbоvе prоgrаm, it prоducеs thе fоllоwing rеsult −

10
20
30
40
50

Аccеssing Аrrаy Еlеmеnt


Wе cаn аccеss еаch еlеmеnt оf аn аrrаy using thе indеx оf thе еlеmеnt. Thе bеlоw cоdе shоws
hоw tо аccеss аn аrrаy еlеmеnt.

Еxаmplе
frоm аrrаy impоrt *

аrrаy1 = аrrаy('i', [10,20,30,40,50])

print (аrrаy1[0])

print (аrrаy1[2])

Оutput
Whеn wе cоmpilе аnd еxеcutе thе аbоvе prоgrаm, it prоducеs thе fоllоwing rеsult, which
shоws thе еlеmеnt is insеrtеd аt indеx pоsitiоn 1.

10
30

20
Insеrtiоn Оpеrаtiоn
Insеrt оpеrаtiоn is tо insеrt оnе оr mоrе dаtа еlеmеnts intо аn аrrаy. Bаsеd оn thе
rеquirеmеnt, а nеw еlеmеnt cаn bе аddеd аt thе bеginning, еnd, оr аny givеn indеx оf аrrаy.

Еxаmplе
Hеrе, wе аdd а dаtа еlеmеnt аt thе middlе оf thе аrrаy using thе pythоn in-built insеrt()
mеthоd.

frоm аrrаy impоrt *

аrrаy1 = аrrаy('i', [10,20,30,40,50])

аrrаy1.insеrt(1,60)

fоr x in аrrаy1:
print(x)

Whеn wе cоmpilе аnd еxеcutе thе аbоvе prоgrаm, it prоducеs thе fоllоwing rеsult which
shоws thе еlеmеnt is insеrtеd аt indеx pоsitiоn 1.

Оutput
10
60
20
30
40
50

Dеlеtiоn Оpеrаtiоn
Dеlеtiоn rеfеrs tо rеmоving аn еxisting еlеmеnt frоm thе аrrаy аnd rе-оrgаnizing аll еlеmеnts
оf аn аrrаy.

Еxаmplе
Hеrе, wе rеmоvе а dаtа еlеmеnt аt thе middlе оf thе аrrаy using thе pythоn in-built rеmоvе()
mеthоd.

frоm аrrаy impоrt *

21
аrrаy1 = аrrаy('i', [10,20,30,40,50])

аrrаy1.rеmоvе(40)

fоr x in аrrаy1:
print(x)

Оutput
Whеn wе cоmpilе аnd еxеcutе thе аbоvе prоgrаm, it prоducеs thе fоllоwing rеsult which
shоws thе еlеmеnt is rеmоvеd fоrm thе аrrаy.

10
20
30
50

Sеаrch Оpеrаtiоn
Yоu cаn pеrfоrm а sеаrch fоr аn аrrаy еlеmеnt bаsеd оn its vаluе оr its indеx.

Еxаmplе
Hеrе, wе sеаrch а dаtа еlеmеnt using thе pythоn in-built indеx() mеthоd.

frоm аrrаy impоrt *

аrrаy1 = аrrаy('i', [10,20,30,40,50])

print (аrrаy1.indеx(40))

Оutput
Whеn wе cоmpilе аnd еxеcutе thе аbоvе prоgrаm, it prоducеs thе fоllоwing rеsult which
shоws thе indеx оf thе еlеmеnt. If thе vаluе is nоt prеsеnt in thе аrrаy thеn th еprоgrаm
rеturns аn еrrоr.

Updаtе Оpеrаtiоn
Updаtе оpеrаtiоn rеfеrs tо updаting аn еxisting еlеmеnt frоm thе аrrаy аt а givеn indеx.

22
Еxаmplе
Hеrе, wе simply rеаssign а nеw vаluе tо thе dеsirеd indеx wе wаnt tо updаtе.

frоm аrrаy impоrt *

аrrаy1 = аrrаy('i', [10,20,30,40,50])

аrrаy1[2] = 80

fоr x in аrrаy1:
print(x)

Оutput
Whеn wе cоmpilе аnd еxеcutе thе аbоvе prоgrаm, it prоducеs thе fоllоwing rеsult which
shоws thе nеw vаluе аt thе indеx pоsitiоn 2.

10
20
80
40
50

23
Lists
Thе list is а mоst vеrsаtilе dаtаtypе аvаilаblе in Pythоn which cаn bе writtеn аs а list оf
cоmmа-sеpаrаtеd vаluеs (itеms) bеtwееn squаrе brаckеts. Impоrtаnt thing аbоut а list is thаt
itеms in а list nееd nоt bе оf thе sаmе typе.

Crеаting а list is аs simplе аs putting diffеrеnt cоmmа-sеpаrаtеd vаluеs bеtwееn squаrе


brаckеts.

Fоr еxаmplе
list1 = ['physics', 'chеmistry', 1997, 2000]
list2 = [1, 2, 3, 4, 5 ]
list3 = ["а", "b", "c", "d"]

Similаr tо string indicеs, list indicеs stаrt аt 0, аnd lists cаn bе slicеd, cоncаtеnаtеd аnd sо оn.

Аccеssing Vаluеs
Tо аccеss vаluеs in lists, usе thе squаrе brаckеts fоr slicing аlоng with thе indеx оr indicеs tо
оbtаin vаluе аvаilаblе аt thаt indеx.

Fоr еxаmplе
#!/usr/bin/pythоn

list1 = ['physics', 'chеmistry', 1997, 2000]


list2 = [1, 2, 3, 4, 5, 6, 7 ]
print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5]

Whеn thе аbоvе cоdе is еxеcutеd, it prоducеs thе fоllоwing rеsult −

list1[0]: physics
list2[1:5]: [2, 3, 4, 5]

Updаting Lists
Yоu cаn updаtе singlе оr multiplе еlеmеnts оf lists by giving thе slicе оn thе lеft-hаnd sidе оf
thе аssignmеnt оpеrаtоr, аnd yоu cаn аdd tо еlеmеnts in а list with thе аppеnd() mеthоd.

24
Fоr еxаmplе
#!/usr/bin/pythоn

list = ['physics', 'chеmistry', 1997, 2000]


print "Vаluе аvаilаblе аt indеx 2 : "
print list[2]
list[2] = 2001
print "Nеw vаluе аvаilаblе аt indеx 2 : "
print list[2]

• Nоtе − аppеnd() mеthоd is discussеd in subsеquеnt sеctiоn.

Whеn thе аbоvе cоdе is еxеcutеd, it prоducеs thе fоllоwing rеsult −

Vаluе аvаilаblе аt indеx 2 :


1997
Nеw vаluе аvаilаblе аt indеx 2 :
2001

Dеlеtе List Еlеmеnts


Tо rеmоvе а list еlеmеnt, yоu cаn usе еithеr thе dеl stаtеmеnt if yоu knоw еxаctly which
еlеmеnt(s) yоu аrе dеlеting оr thе rеmоvе() mеthоd if yоu dо nоt knоw.

Fоr еxаmplе
#!/usr/bin/pythоn

list1 = ['physics', 'chеmistry', 1997, 2000]


print list1
dеl list1[2]
print "Аftеr dеlеting vаluе аt indеx 2 : "
print list1

Whеn thе аbоvе cоdе is еxеcutеd, it prоducеs fоllоwing rеsult −

['physics', 'chеmistry', 1997, 2000]


Аftеr dеlеting vаluе аt indеx 2 :
['physics', 'chеmistry', 2000]

• Nоtе − rеmоvе() mеthоd is discussеd in subsеquеnt sеctiоn.

25
Bаsic List Оpеrаtiоns
Lists rеspоnd tо thе + аnd * оpеrаtоrs much likе strings; thеy mеаn cоncаtеnаtiоn аnd
rеpеtitiоn hеrе tоо, еxcеpt thаt thе rеsult is а nеw list, nоt а string.

In fаct, lists rеspоnd tо аll оf thе gеnеrаl sеquеncе оpеrаtiоns wе usеd оn strings in thе priоr
chаptеr.

Pythоn Еxprеssiоn Rеsults Dеscriptiоn

lеn([1, 2, 3]) 3 Lеngth

[1, 2, 3] + [4, 5, 6] [1, 2, 3, 4, 5, 6] Cоncаtеnаtiоn

['Hi!'] * 4 ['Hi!', 'Hi!', 'Hi!', 'Hi!'] Rеpеtitiоn

3 in [1, 2, 3] Truе Mеmbеrship

fоr x in [1, 2, 3]: print x, 123 Itеrаtiоn

26
Tuplеs
А tuplе is а sеquеncе оf immutаblе Pythоn оbjеcts. Tuplеs аrе sеquеncеs, just likе lists. Thе
diffеrеncеs bеtwееn tuplеs аnd lists аrе, thе tuplеs cаnnоt bе chаngеd unlikе lists аnd tuplеs
usе pаrеnthеsеs, whеrеаs lists usе squаrе brаckеts.

Crеаting а tuplе is аs simplе аs putting diffеrеnt cоmmа-sеpаrаtеd vаluеs. Оptiоnаlly yоu cаn
put thеsе cоmmа-sеpаrаtеd vаluеs bеtwееn pаrеnthеsеs аlsо.

Fоr еxаmplе
tup1 = ('physics', 'chеmistry', 1997, 2000);
tup2 = (1, 2, 3, 4, 5 );
tup3 = "а", "b", "c", "d";

Thе еmpty tuplе is writtеn аs twо pаrеnthеsеs cоntаining nоthing −

tup1 = ();

Tо writе а tuplе cоntаining а singlе vаluе yоu hаvе tо includе а cоmmа, еvеn thоugh thеrе is оnly оnе vаluе −

tup1 = (50,);

Likе string indicеs, tuplе indicеs stаrt аt 0, аnd thеy cаn bе slicеd, cоncаtеnаtеd, аnd sо оn.

Аccеssing Vаluеs in Tuplеs


Tо аccеss vаluеs in tuplе, usе thе squаrе brаckеts fоr slicing аlоng with thе indеx оr indicеs tо
оbtаin vаluе аvаilаblе аt thаt indеx.

Fоr еxаmplе
#!/usr/bin/pythоn

tup1 = ('physics', 'chеmistry', 1997, 2000);


tup2 = (1, 2, 3, 4, 5, 6, 7 );
print "tup1[0]: ", tup1[0];
print "tup2[1:5]: ", tup2[1:5];

Whеn thе аbоvе cоdе is еxеcutеd, it prоducеs thе fоllоwing rеsult −

tup1[0]: physics
tup2[1:5]: [2, 3, 4, 5]

27
Updаting Tuplеs
Tuplеs аrе immutаblе which mеаns yоu cаnnоt updаtе оr chаngе thе vаluеs оf tuplе еlеmеnts.
Yоu аrе аblе tо tаkе pоrtiоns оf еxisting tuplеs tо crеаtе nеw tuplеs аs thе fоllоwing еxаmplе
dеmоnstrаtеs −

#!/usr/bin/pythоn

tup1 = (12, 34.56);


tup2 = ('аbc', 'xyz');

# Fоllоwing аctiоn is nоt vаlid fоr tuplеs


# tup1[0] = 100;

# Sо lеt's crеаtе а nеw tuplе аs fоllоws


tup3 = tup1 + tup2;
print tup3;

Whеn thе аbоvе cоdе is еxеcutеd, it prоducеs thе fоllоwing rеsult −

(12, 34.56, 'аbc', 'xyz')

Dеlеtе Tuplе Еlеmеnts


Rеmоving individuаl tuplе еlеmеnts is nоt pоssiblе. Thеrе is, оf cоursе, nоthing wrоng with
putting tоgеthеr аnоthеr tuplе with thе undеsirеd еlеmеnts discаrdеd.

Tо еxplicitly rеmоvе аn еntirе tuplе, just usе thе dеl stаtеmеnt.

Fоr еxаmplе
#!/usr/bin/pythоn

tup = ('physics', 'chеmistry', 1997, 2000);


print tup;
dеl tup;
print "Аftеr dеlеting tup : ";
print tup;

• Nоtе − аn еxcеptiоn rаisеd, this is bеcаusе аftеr dеl tup tuplе dоеs nоt еxist аnymоrе.

This prоducеs thе fоllоwing rеsult −

28
('physics', 'chеmistry', 1997, 2000)
Аftеr dеlеting tup :
Trаcеbаck (mоst rеcеnt cаll lаst):
Filе "tеst.py", linе 9, in <mоdulе>
print tup;
NаmеЕrrоr: nаmе 'tup' is nоt dеfinеd

Bаsic Tuplеs Оpеrаtiоns


Tuplеs rеspоnd tо thе + аnd * оpеrаtоrs much likе strings; thеy mеаn cоncаtеnаtiоn аnd
rеpеtitiоn hеrе tоо, еxcеpt thаt thе rеsult is а nеw tuplе, nоt а string.

In fаct, tuplеs rеspоnd tо аll оf thе gеnеrаl sеquеncе оpеrаtiоns wе usеd оn strings in thе priоr
chаptеr.

Pythоn Еxprеssiоn Rеsults Dеscriptiоn

lеn((1, 2, 3)) 3 Lеngth

(1, 2, 3) + (4, 5, 6) (1, 2, 3, 4, 5, 6) Cоncаtеnаtiоn

('Hi!',) * 4 ('Hi!', 'Hi!', 'Hi!', 'Hi!') Rеpеtitiоn

3 in (1, 2, 3) Truе Mеmbеrship

fоr x in (1, 2, 3): print x, 123 Itеrаtiоn

29
Another random document with
no related content on Scribd:
takana nukkuvaan isäntään ja hartaasti haastelevaan
pöytäseurueeseensa, joka silmät kosteina tarinoi sydämensä
kyllyydestä. Ja Santtepekin valtasi sanomaton sääli ja rakkaus näitä
poloisia ihmislapsia kohtaan. Hän painoi päänsä käsiinsä ja suuret
kyyneleet rupesivat hiljaa tipahtelemaan hänen valkoiselle
parralleen. Sotamies Lusti huomasi sen ja sanoi:

— Olkaa hiljaa, pojat! Ukko itkee!

Santtepekki itki ja tunsi siinä surunsa ja säälinsä syvyydessä


yhdistävänsä itsensäkin osalliseksi samaan raadollisuuteen. Tämä
yön pimeys ja tuo tuikkiva himmeä valaistus johdatti hänen
mieleensä hetken, jolloin hänen inhimillinen heikkoutensa oli
saattanut hänet hänen syvimpään alennustilaansa. Hän tunsi syvää
anteeksisaannin tarvetta, kohotti päätänsä ja alkoi puhua:

— Ystävät ja veljet, kerronpa teille erään tapauksen, joka sattui


kauan aikaa sitten. Oli pimeä ja synkkä yö kuten nytkin, ja pahat
voimat olivat liikkeellä. Jeesus Kristus, vapahtajamme, oli vangittu ja
viety Kaifaan palatsiin Pahanneuvon vuorelle, Hinnomin laakson
toiselle puolelle, ja varoen sekä arkana oli häntä ulohtaalta
seurannut sinne Pietari, onneton ja heikko opetuslapsi, joka
kuitenkin rakasti palavasti Herraansa. Oli kylmä. Palatsin pihalla
valvoi tulen ääressä joukko orjia ja sotilaita, ja palatsin ovesta näkyi
sinne Jeesuksen haahmo korkeana ja valkeana. Silloinpa eräs
palvelijoista kysyi Pietarilta, eikö hän ollut Jeesuksen opetuslapsia,
ja…

Santtepekki keskeytti kertomuksensa, sillä pihalta kuului nyt


ensimmäinen kukonlaulu tänä yönä. Se kaikui yön hiljaisuudessa
oudolta, pitkäveteisen kaamealta, ja kaikkia läsnäolijoita värisytti.
Santtepekin otsalle kohosivat hikipisarat. Hän jatkoi:
— Ja Pietari kielsi. Heti sen tehtyään hän katsoi Jeesukseen, joka
nyt kääntyi häneen päin. Jeesuksen silmistä loisti niin surumielinen,
säälivä ja syyttävä ajatus, että Pietari lyyhistyi siihen paikalleen, ja
kaikki tuijottivat häneen kummastellen. Silloin sama kysyjä uudelleen
tiedusti epäillen, eikö hän sittenkin ollut tuon Nasarealaisen
opetuslapsia, ja…

Nyt lauloi kukko toisen kerran. Santtepekki nousi äkkiä seisomaan,


kurotti kätensä ylöspäin, ja näytti vaipuvan sanomattoman
tuskalliseen taisteluun. Hänen kasvoillaan oli suuren kärsimyksen
leima, kun hän jatkoi:

— Ja Pietari kielsi Herransa toisen kerran…

Vaiettiin. Jotakin kolkkoa ja murheellista oli hiipinyt saapuville.


Jokaisen mielessä kuvastui selvänä ja kirkkaana tuo raskas hetki.
Kukko ulkona lauloi kolmannen kerran. Santtepekki vaipui
paikalleen, painoi kätensä silmilleen ja mumisi itsekseen:

— Ja Pietari kielsi Herransa kolmannen kerran. Silloin Jeesus taas


katsoi häneen ja Pietari muisti hänen sanansa: "Ennenkuin kukko
kolmesti laulaa, sinä minut kiellät". Hän meni pois ja itki katkerasti.
Sanokaa minulle, ystävät, oletteko te voineet antaa sydämessänne
Pietarille tämän hänen heikkoutensa anteeksi?

Silloin sotamies Lusti kaasi pikarinsa täyteen ja sanoi:

— Nyt, pojat, ryypätään Pietarin malja, sillä Jeesuksen


opetuslapsista juuri hän sen ansaitsee. Tuota kukonlaulujuttua ei
pidä ottaa ollenkaan vakavalta kannalta, ja onkin sitä aina väärin
selitetty ja sillä Pietaria halvennettu. Asiahan on aivan selvä: ollaan
sodassa ylimmäisen papin kanssa, jonka patrulli onnistuneella
hyökkäyksellä vangitsee Pietarin päällikön. Muut pakenevat, mutta
Pietari lähtee synnynnäisenä sotilaana vakoilemaan, minne korkeata
vankia viedään, ja seuraa häntä perille asti. Olisihan hän ollut
pähkähullu, jos hän siellä olisi ilmaissut itsensä ja joutunut siten
hänkin vangiksi. Siksi hän tietysti kielsi asian, tarkoittamatta sillä
suinkaan kieltää itse aatetta ja Herraansa. Ja sitä paitsi: lankeemus
se vasta ihmisen kasvattaa, jos on kasvattamisen ainesta, kuten
juuri Pietarissa oli. Kyllähän nämä tunnetaan, maailman puhtaat ja
omahyväiset: ne ovat niitä Jeesuksen tarkoittamia, valkeiksi sivuttuja
hautoja, jotka ovat täynnä saastaa ja kuolleiden luita. Ei, pojat,
Pietari oli ihminen sitä oikeata lajia, ja siksi, Santtepekki, vie ukolle
terveiset, ettei huoli olla millänsäkään. Toista olisi, jos hän todella
olisi Herransa ja aatteensa kieltänyt: se olisi ollut samaa kuin
lippunsa pettäminen ja lankeisi juuri visusti sota-artiklojen alaiseksi
teoksi. Ja ne artiklat, pojat, eivät käyttele sanottavasti sen
vaihtelevampaa sovitus-uhria kuin poikkipuuta ja silmukkaa, jonka
minä mahdan hyvin tuntea, kun se oli jo kerta omassakin kaulassani.
Siis, pojat, Pietarin malja, ja reilusti pohjaan!

Santtepekki kuunteli Lustin leveätä puhetta. Sen keveästä


leimasta huolimatta hän tunsi siitä virtaavan sydämeensä
inhimillisyyden suurta ja anteeksiantavaa voimaa, joka kirkasti ja
lohdutti hänen sieluansa. Vaitiollen hän kilisti kaikkien läsnäolijoiden
kanssa ja syleili rakkaasti sotamies Lustia, joka iski hänen selkänsä
takaa toisille iloisesti silmää. Sitten Santtepekki alkoi taas haastella
hiljaa ja vakavasti, ja kuta kauemmin seurue kuunteli hänen
puhettansa, sitä ihmeellisempi tunnelma valtasi kaikki. Jotakin
ylentävää, puhdasta ja juhlallista hiipi heidän sieluunsa, täyttäen sen
ihanalla kaipuulla kerran päästä kokemaan todellista ja kestävää,
ylevää onnea. Kun vihdoin nouseva aurinko lähetti ensimmäisen
säteensä ikkunasta, valaisten harmajan huoneen, lopetti Santtepekki
puheensa, ja silloin painoi sotamies Lusti päänsä alas ja sanoi hiljaa
ja hartaasti: "Amen!"

Santtepekki ja sotamies Lusti heittäytyivät olkikuvolle ja nukkuivat


siinä vierekkäin rauhallisina ja tyytyväisinä kuin lapset.

IX

Herätessään aamulla huomasi Santtepekki olevansa yksin. Hänen


päänsä tuntui hiukan raskaalta, kun hän hiljalleen alkoi hankkiutua
nousemaan karkealta vuoteeltaan. Samassa aukenikin ovi ja Lusti
tuli suurella rymyllä sisään. Hän puheli Pietarille:

— Tuli ryypättyä eilen illalla vähän liiemmälti, niin että herätessäni


porotti päätä kuin olisi siellä ollut kolmen sepän verstas. Mutta
minulla on vanhastaan siihen asiaan hyvä keino: paha on pahalla
pois ajettava. Niinpä pyysin heti isännältä huikean aamuryypyn,
jonka hän uskoi velaksi kun vakuutin, että meillä on täällä suuret ja
valtavat raha-ansiot edessä, ja kumottuani sen naamaani tunsin
pian, kuinka sepät rupesivat panemaan työkalujaan kokoon ja
luikkimaan ovesta ulos. Hyvällä puheella sain kiusatuksi äijältä
ryypyn sinuakin varten. Kas tässä, otahan tämä, niin tunnet itsesi
jälleen ihmiseksi. Voithan sitten mennä pihalle ja ammentaa vettä
kaivosta niskaasi, kuten minäkin tein, jos tahdot viimeisenkin
muiston eilisestä hävittää. Heh!

Mutta nyt ei Santtepekki enää huolinut ryypystä. Vaitiollen hän risti


kätensä ja rupesi hiljaisella rukouksella keskustelemaan Herransa
kanssa, sielussa kaihertava muisto siitä inhimillisestä, joka oli hänen
osakseen edellisenä iltana sattunut. Hän ihmetteli itsekseen, pitikö
tätä vielä jatkuman, ja mitä Herra tahtoi hänelle sen avulla opettaa.
Kun Lusti uudisti tarjouksensa, eikä Santtepekki pannut siihen
mitään huomiota, kaatoi Lusti tyynesti hänenkin osansa avaraan
kitaansa, kiitellen itsekseen isäntää, joka, kunnon mies, piti niin
tavattoman hyvää viinaa kulkevaisten varalle. Samassa alkoi pihalta
kuulua kova rummun pärrytys, jonka jälkeen mies rupesi korkealla
äänellä kuuluttamaan jotakin. Santtepekki oli vaipunut hartauteensa
ollen toisissa maailmoissa, mutta Lusti heristi korviansa kuin vanha
sotahevonen torven äänen kuullessaan, ja luikahti nokkelasti ulos.

Eipä kulunut pitkää aikaa, ennenkuin hän ryntäsi takaisin sisään,


perässään suuri joukko kansaa, ja huusi kiihtyneenä:

— Hoi, Santtepekki, heräjä unestasi, sillä nythän meitä vasta


onnen siipi hiipaisi!

Ja kun Santtepekki katseli hajamielisenä ja hämillään ympärilleen,


ymmärtämättä, mitä oli tekeillä, ravisti Lusti häntä olkapäästä ja
puheli touhuten:

— No etkö jo älyä! Kun tulee tuohon pihalle rummuttaja ja


rummuttaa, ja perässä kuuluttaja, joka kuuluttaa, että tämän
kaupungin rikkaimman ja ylhäisimmän miehen tytär on kovasti
sairaana. Niin, ja että kaikilta maan kulmilta on kuljetettu parhaat
tohtorismiehet häntä parantamaan, mutta mitä tyhjää —
pahemmaksi vain on raukka tullut. Ja lupaa nyt rikas mies yhdeksän
hyvää ja kahdeksan kaunista eli siis paljon rahaa sille, joka hänen
sairaan tyttärensä parantaa taitaa. Kirkoissakin tänään esirukouksia
tytön puolesta Jumalan eteen kannetaan, sillä neito kuuluu olevan
hellä sydämeltään ja ihana muodoltaan, jota kaikki ihmiset
rakastavat. Ymmärrätkös nyt asian?
Ja kaikki saapuvilla olevat rupesivat rukoilemaan tytön puolesta,
pyytäen, että Santtepekki menisi häntä katsomaan, ja koettaisi,
voisiko hän, kun kuuluu niin ihmeellinen lääkäri olevan, mitään apua
antaa. Santtepekki kuunteli sielustaan Jumalan ääntä, kuuli käskyn
ja lähti toimittamaan Herransa määräystä. Sotamies Lusti astui
touhuten hänen edellään ja väkijoukko antoi heille vaieten tietä. Niin
he saapuivat rikkaan miehen asunnolle.

Kun he astuivat ovesta sisään, näkivät he heti, että mykkä murhe


kuvastui kaikkien kasvoilla. Tuo rikas mies oli jo vanhus, jonka
silmistä valuivat hiljaa kyyneleet. Kaiken sen loiston, joka häntä
ympäröi, hän olisi kernaasti antanut sille, joka olisi voinut pelastaa
hänen tyttärensä hengen, mutta sellaista ei ollut löytynyt.

Santtepekin ja Lustin tullessa sisään kohtasi heitä ensin


tyytymätön katse, joka kuitenkin heti muuttui kunnioittavaksi
tottelemiseksi Santtepekin muodon edessä. He menivät monien
huoneiden läpi, keskitse maallisen komeuden ja turhuuden. Oli
musta huone ja punainen, oli sininen, jonka seinillä leikki värillisten
ikkunoiden ihmeellinen valo, ja oli lopuksi valkoinen, jonka keskellä
oli suuri, lumipuhdas vuode, ja tuossa vuoteessa lepäsi
vaaleakutrinen neito, melkein yhtä valju kuin pieluksensa liina.
Tummana piirtona häämöittivät neidon kulmakarvat ja silmäripset,
mutta silmät olivat painuneet umpeen ja rinta kohoili tuskin
huomattavasti. Tämän suuren surun ja suuren puhtauden
nähdessään pysähtyi Lusti hiljaa ovensuuhun, sillä hänestä tuntui
äkkiä kuin olisi hän tullut johonkin kaikelle maalliselle vieraaseen
paikkaan, olentojen ja voimien pariin, jotka olivat hänelle,
yksinkertaiselle sotamies-raukalle, mahdottomia ymmärtää. Ja kun
neito Santtepekin lähestyessä hiljaa avasi silmänsä ja annettuaan
katseensa hetkisen harhailla vihdoin kiinnitti sen Lustiin, tunsi tämä,
kuinka sama polttava onnen ja autuuden kaipuu, jota hän oli kokenut
yöllä Santtepekin puhuessa, lämmittävänä tuikkeena virtasi tuosta
katseesta hänen sieluunsa, saaden hänet uudelleen heltymään ja
laskeutumaan polvilleen, haluna rukoilla jotakin, kääntyä sen
puoleen, jonka hänen koko henkinen olemuksensa kuin hätähuutona
todisti kaiken määrääjäksi ja mahtavimmaksi ratkaisijaksi. Ja samalla
väikkyi neidon kuva hänen edessään sellaisena puhtauden ja
kauneuden kirkastettuna kuvana, että tunto oman elämän liasta
yht'äkkiä muodostui hänelle sanomattomaksi taakaksi, jonka alta
hänen täytyi apua pyytäen ruveta pyrkimään pois. Santtepekki
katsahti polvistuneeseen toveriinsa ja näki hänen sielunsa taistelun.
Sitten hän hiljaa meni neidon vuoteen päänpohjiin ja laski siunaten
kätensä hänen päänsä päälle. Huoahtaen neito taas ummisti
silmänsä.

Lusti tunsi äkkiä, kuinka kaikki hänen ympärillään aluksi muuttui


kuin sumuksi, alkaen vihdoin väreillä kuin kyyneleiden läpi
katsottuna. Samalla hän tunsi jäätävän kylmän hengähdyksen
poskellaan ja kääntyi katsomaan ovesta sinne, josta he äsken olivat
tulleet.

Lustista oli kuin olisi avoimesta ovesta näkynyt loputon käytävä,


joka tuolla kaukana suippeni suippenemistaan, kunnes vihdoin
seinät näyttivät menevän yhteen. Ja tuolta kaukaisimmasta kärjestä
rupesi hiljaa ja armottomasti lähestymään kolkko haamu, ikuinen
vanhus, elämän sokea kulkija, Surma, silmät kuopalla ja jäähileet
parrassa hilisten. Se läheni hiljaa, mutta hapuilematta, sen käsi
ikäänkuin osoitti tietä, ja viluinen huurre laskeusi sen jälkiin. Peläten
Lusti arvasi, kuka tulija oli, ja kääntyi apua anoen Santtepekin
puoleen.
Tämä katsoi tulijaa hievahtamatta, pitäen kättänsä sairaan neidon
otsalla. Lusti näki hänen katseessaan jotakin, joka ei ollut kotoisin
tästä maailmasta, ja joka saattaa joskus, ihmisen pyhimmän ja
jumalaisimman ajatuksen hetkellä, tuikahtaa inhimillisestä, silmästä
kuin häivähdys siitä ikuisesta kirkkaudesta, jossa ei epäselvyyttä ole.
Santtepekin sielu tunsi valoisasti, että hänen ei pitänyt rukouksella
eikä avunhuudolla koettaakaan astua sen Jumalan aivoituksen tielle,
joka tässä oli toteutumassa, ja hän aavisti, että inhimillinen suru
saattoi usein olla kykenemättömyyttä ymmärtämään kuoleman
suurta ja vapahtavaa onnea. Hän katsoi hitaasti lähestyvää Surmaa
ja kuunteli, kuinka jossakin lähellä talon vanha ja mahtava kello
armottomin, iäisyystotisin askelin mittasi kallista lahjaansa, aikaa,
mitään kuulematta ja mitään näkemättä, tulkitsemattomana,
vaskikasvoisena. Ja kuta lähemmäksi neidon vuodetta Surma
saapui, sitä hiljaisemmaksi tuntui kellon käynnin ääni tulevan,
kunnes se vihdoin, Surman hajotessa ihaniksi lumikiteiksi nuoruuden
kiireelle, äkkiä katkesi.

Ja tuskansa vallassa taisteleva Lusti näki, kuinka neidon vuoteelta


kohosi kirkas henki, kuin kahleista vapautunut iki-ihanuus, se
kauneus, jonka ihminen itsessään tuntee, mutta joka on taakan alle
masennettu. Vuoteelle jäi lepäämään rauhan ja levon kuva, niin
ehdoton ja luoksepääsemätön viileässä, ylhäisessä tyyneydessään,
niin viehättävä kuultavassa, hennossa puhtaudessaan, että se iski
Lustin sieluun kuin läpitunkeva salama, särkien ja polttaen sen. Hän
vaipui maahan ja hänen tuskansa puhkesi sydäntä vihlovaksi
valitukseksi.

Mutta neidon isä seisoi tyttärensä kuolinvuoteen vierellä vaieten,


hiljaa ja liikkumatta kuin kivikuva. Ja kun väki oli nöyränä
huoneeseen kokoontunut, heräsi Santtepekki rukouksestaan ja
rupesi puhelemaan kuin itsekseen. Hän noudatti Jumalan käskyä
sydämessään ja ilmoitti kaikille sen, minkä hän täällä yksin tiesi: sen
ihanuuden, josta neidon kuolematon henki nyt oli päässyt osalliseksi.
Ja hänen puhuessaan tunsivat kaikki, kuinka selittämätön lohdun
aalto tulvahti heidän sydämeensä, tuoden mukanaan onnellisen
aavistuksen ikuisesta rauhasta.

Lusti ja Santtepekki poistuivat hiljaa, mutta ovella rikas mies


pysähdytti heidät. Hän pyysi tarjota heille rahalahjaa, koska tiesi
heidät köyhiksi matkalaisiksi ja koska he olivat osanneet lohduttaa
häntä suuressa surussa. Santtepekki ei vastannut mitään, mutta
Lustin käsi kohosi ensin epäröivästi, laskeutui taas, kohosi kuitenkin,
ja pisti kiireesti, kuin häpeillen, raskaan kukkaron avaraan taskuun.
Santtepekki katsoi häneen omituisen tutkivasti, mutta ei nytkään
sanonut mitään. Vaitiollen he menivät takaisin krouviinsa. Siellä
vasta Santtepekki sanoi:

— Annappas tänne se kukkaro!

Lusti epäröi, mutta totteli sitten. Santtepekki otti kukkarosta rahat,


laski ne ja eroitteli ne mitään sanomatta kolmeen erään. Yhden hän
pisti omaan taskuunsa, toisen siirsi Lustin eteen, mutta jätti
kolmannen koskematta. Lusti oli katsellut hänen puuhiansa
ihmetellen, kunnes lopuksi kysyi:

— No, kenelle tuo kolmas läjä annetaan? Santtepekki katseli


häntä nuhtelevaisesti ja sanoi:

— Sille, joka söi sen lampaan sydämen.


Lustilta pääsi hänen surustaan ja raskaasta sydämestään
huolimatta makea nauru, sillä Santtepekki oli hänestä niin viattoman
ja lapsellisen näköinen siinä moista asiaa tutkiessaan. Hän pyyhkäisi
hilpeästi kolmannenkin läjän taskuunsa ja sanoi:

— Vielä häntä kysyy! Minähän sen tietysti söin. Luulin sinun sen
älynneen.

Santtepekki huokasi. Hän oli aikonut tällä tavalla päästä pienen


nuhdesaarnan alkuun, mutta huomasi sen toivottomaksi. Hän ei siis
puhunut mitään, rykäisihän vain kuivasti ja katseli toveriaan. Ja
silloin hän huomasi, että Lusti oli sittenkin muuttunut.

Hän näki sen, mikä oli astunut Lustin sydämeen. Se oli se


kalpeakasvoinen haamu, joka juoksee jokaisen ihmisen perässä ja
varmasti kerran saavuttaa hänet, huolimatta kaikista varokeinoista;
silloin se jättää saaliinsa seisomaan autiolle, kulovalkean
hävittämälle nummelle, jossa on joka taholla vain hiiltä, tuhkaa,
maahan sortuneita runkoja, ilmassa alakulon hiljaa tihkuva murhe;
se jättää hänet elämän rannattoman, aution jängän selälle, jossa ei
kuule muuta kuin kuovin alati valittavaa huutoa ja tuulen oneaa,
surumielistä suhinaa menneiden keväiden ja kesien kuloruohossa;
se jättää hänet yksinäiseksi ja orvoksi maailman ihmisvilinän
keskelle, takana poltettu maa, edessä ammottava kuilu, sydämessä
katkeran kipeä tyhjyys, yhtyneenä sammumattomaan, kiihkeään
paremman kaipuuseen. Se kalpeakasvoinen vieras on elämän ikävä,
onttosilmäinen kummitus, joka astuu hiljaa ja vastustamattomasti
sielun öisestä ikkunasta sisään kuin kolkko murtovaras, vieden kaikki
ja jättäen jäljelle kumisevan tyhjyyden.

Sen näki Santtepekki ystävänsä sydämessä ja huomasi, kuinka


Lusti iloisesta ilmeestään huolimatta salaa vääntelehti tuskansa
vuoksi. Katse harhaili levottomasti ja sielu huusi hätäisenä takaisin
sitä huolettoman iloisuuden ja tyytyväisyyden tilaa, jossa se vielä
äsken oli ollut. Luoja oli ojentanut lahjomattoman kätensä ja painanut
Lustiin poltinmerkkinsä.

Lusti tunsi, kuinka suuri tuska jäyti hänen sieluaan, ja avutonna


kuin hukkuva hän koetti etsiä itselleen lievennystä. Hänen kätensä
sattui menemään taskuun, josta kylmä kulta tuntui hänen sormiinsa.
Silloin välähti uhman tuli hänen katseessaan. Hän riensi
myymäpöydän luo ja kaasi itselleen suuren lasin viinaa, jonka valutti
keskeyttämättä kurkkuunsa. Santtepekki yritti häntä estää, aikoi
puhua ja kieltää, mutta tunsi olevansa kuin naulattu paikoilleen.

Näin ajoi suuri tuska ja elämän ikävä sotamies Lustin juomaan.


Hän jatkoi sitä päivästä toiseen, milloin iloisena remuten toisten
vierasten kanssa, milloin hurjana mellastaen, niin että kaikki häntä
pakenivat, milloin taas itkien ja huokaillen sekä puhellen itsekseen
outoja asioita. Tällaisena liikutuksen hetkenä kuvastui hänen
kasvoillaan kirkastunut, nöyrä ja kauas katsova ilme, kuin olisi hän
nähnyt edessään ihanan näyn, jonka kauneus ja puhtaus pani hänen
likaantuneen sydämensä vääntelehtimään kuin polttavien liekkien
korventamana. Santtepekki näki, kuinka hänen sielunsa silloin
kääntyi synnin syvimmästä loasta avunhuudolla Herran puoleen, ja
hän hoiteli ystävä-parkaansa kärsivällisesti ja anteeksiantaen,
odotellen hänen vapahduksensa hetkeä.

Näin kului pitkiä aikoja ja yhä elivät Santtepekki ja sotamies Lusti


tuossa samassa paikassa. Lustin rahat olivat ruvenneet loppumaan
ja hän oli alkanut tiukata Santtepekiltä lisää, mutta tämä ei antanut.
Tällaisen riidan johdosta oli Lusti lopuksi todella sydäntynyt, juonut
ähmissään viimeisenkin killinkinsä, ja makasi nyt, humalan,
heikkouden ja päällerynnänneen sairauden uuvuttamana vuoteellaan
raukeana kuin lanka. Nöyrästi Santtepekki hoiteli hänet lepoon,
viihdytti hänen levottomuuttansa, jäähdytti kuumaa otsaa ja puhui
lohdutuksen sanoja. Silloin Lusti taas ratkesi itkemään ja kääntyi
seinään päin. Santtepekki meni hiljaa ulos, jättäen sairaan yksin yhä
pimenevään, alakuloiseen huoneeseen.

Hänen palatessaan oli jo aivan pimeä. Varsinaisessa krouvissa


tuikutti pieni tuiju, jonka savuava liekki loi harmaille ja kolkoille
seinille levottomia, oudosti häilyviä varjokuvia. Krouvissa oli väkeä,
mutta Santtepekkiä kummastutti siellä vallitseva hiljaisuus. Vastoin
tavallisuutta ei kukaan puhunut mitään, ja pian Santtepekki älysi
miksi. Huoneesta seinän takaa, jossa Lusti makasi, kuului puhetta.
Lusti siellä puhui, ja sitä kaikki kuuntelivat kalpeina ja jännittyneinä.
Santtepekki rupesi myöskin tarkkaamaan, mitä Lusti jutteli ja kenen
kanssa.

Pian hän älysi, että Lusti ilmeisesti pelasi korttia. Pelihimon


kiihdyttämällä äänellä hän lausuili siellä korttisutkauksiaan, välillä
lyöden valtin pöytään, niin että jysähti. Hänen äänensä kiihtyi
kirskuvaksi vihaksi ja hän kuului ryntäävän ylös vuoteeltaan, kunnes
taas tuntui rauhoittuvan, pani uudelleen maata ja ilmeisesti sakaili ja
jakoi korttipakkaa. Mutta tässähän ei ollut mitään krouvissa kävijöille
outoa, jonka olisi tarvinnut ketään peloittaa. Se ei sitä nähtävästi
tehnytkään, vaan tuohon peliin selittämättömällä tavalla liittyvä,
kammottava tunnelma, joka hiipi jokaisen mieleen kuin lattiasta hiljaa
nouseva jäätävä ja värisyttävä sumu. Lustin äänestä, naurusta ja
raivosta ilmeni selvästi, että hänen toverinansa oli joku outo, jonka
kanssa hän ei ollut ennen pelannut, ja hänen erikoinen kiihkonsa
ilmaisi, että pelipanokset olivat korkeammat kuin milloinkaan ennen.
Ja vaikka hänen puheisiinsa ei saattanut sanoa kuuluvan mitään
inhimillisen äänen lausumaa vastausta, tuntui kuuntelijoista
kuitenkin, kuin olisi hänen sanoihinsa väliin kaikunut vastaan jotakin
saatanallista muminaa, jonka tajuaminen jääti sielun kylmällä
ivallaan ja irroitti sen järjen valvonnasta. Se vangitsi kaikki
paikoilleen ja herpaisi sydämen lyönnit.

Santtepekki oli ainoa, joka heti pääsi selville siitä, mitä Lustin
huoneessa tapahtui. Se mikä muille oli sairaan kuumehouretta, oli
hänelle, joka näki salatunkin, valtavinta kamppailua ihmisen sielusta.
Hänen poissa ollessaan oli tuo sama tumma mies, jonka kanssa
Lusti oli taistellut, ilmestynyt tuonne vuoteen viereen ja ehdottanut
peliä. Ja voitonhimo, halu taas saada paljon rahaa, oli saanut
sairaan Lustin heti myöntymään ja niin oli peli alkanut. Onni oli aluksi
suosinut Lustia. Kultaa oli kasautunut hänen vierelleen ja vavisten
kiihkosta hän oli intohimoisesti jatkanut. Mutta sittenpä oli onni
vaihtunut. Raha rahalta vyöryivät kolikot takaisin tumman miehen
taskuun, hänen kolkosti ja kylmästi hymyillessään ja taitavasti
korttejansa käsitellessään. Tämä kiihdytti Lustia yhä enemmän.
Menettäen malttinsa hän pani peliin vähitellen kaikki, mitä omisti,
jopa vihdoin nekin rahat, joita tiesi Santtepekillä olevan. Vihdoin hän
oli aivan tyhjä, ei ollut enää jäljellä mitään. Kärsimättömästi hän
viskasi kortit syrjään ja sanoi synkästi:

— Loppui kaikki. Vie omasi pois ja mene!

— Onhan vielä jotakin, sanoi vieras hymyillen jäätävästi. Hän


kumartui
Lustin puoleen ja kuiskasi muutaman sanan hänen korvaansa.
Silloin
Lusti karkasi ylös vuoteeltaan.
Väki krouvin puolella säikähti entistä enemmän, sillä kamarista
rupesi kuulumaan askelten jytinää, ähinää ja Lustin houreista
huutoa. Santtepekki kavahti seisomaan ja yritti mennä Lustin
huoneeseen, kun sen ovi samalla aukenikin rämähtäen
selkoselälleen. Kynnykselle ilmestyi Lusti kuolonkalpeana, silmät
hurjasti tuijottaen, ja pitäen miekkaansa kahva ylöspäin edessään
kuin ristiä. Kuin pakottaen jotakin tällä ristillään hän eteni hitaasti ja
järkähtämättä ovea kohti, ja kaikki olivat näkevinään, kuinka nuo
seinillä hyppelehtineet tummat varjot ikäänkuin kokoontuivat yhdeksi
haamuksi, joka vastahakoisesti ja taistellen aina pakostakin
masentui ristin edessä ja siirtyi oveen päin. Lustin silmissä oli
kauhistunut, mutta samalla yhä riemuitsevampi ilme, kun hän
saaden yhä enemmän rohkeutta ja voimaa viimein kohotti
miekkaristinsä korkealle ja ikäänkuin löi sillä vihollisensa ovesta ulos.
Sitten hän seisoi kauan hiljaa katsoen yhä miekkansa kahvaan, ja
läsnäolijat näkivät, kuinka hänen kasvoilleen kohosi nöyrä ja
kirkastettu ilme, samalla kuin huonetta tuntui valaisevan ihana,
vaalea hohde, joka näytti säteilevän miekan rististä. Huumautuneena
ja autuaana Lusti tuijotti siihen, kunnes hitaasti vaipui polvilleen,
kohotti kätensä ylös ja sanoi hiljaa:

— Jumala, sinun miekkasi on minut vapahtanut!

Ja sen sanottuaan hän lysähti tainnoksissa maahan. Santtepekki


nosti hänet hellästi, jättiläisvoimin, syliinsä ja kantoi hänet
vuoteeseen kuin lapsen, mutta ihmiset ympärillä tunsivat
vapautuvansa lumouksen kahleista ja hiipivät hiljaa tiehensä kuin
varjot, sydämessä aavistus jostakin ihmeestä, jota olivat olleet
näkemässä, mutta jota eivät täydelleen ymmärtäneet.

*****
Santtepekki istui uskollisesti Lustin vuoteen vieressä ja hoiti häntä
hellästi. Lusti oli nyt joutunut siihen virtaan, joka juoksee nopeasti,
valtavana ja sileänä vuolteena, iankaikkisuutta kohti. Jo häämöitti
tuolla kaukana se siintävä ja rajaton meren selkä, jonka aaltoihin
vaipuminen avaa ikuisen rauhan ja levon portin.

Houreissaan Lusti rupesi elämään alusta saakka omia


vaiheitansa. Kuin kuvana esiintyi Santtepekille hänen puheluistaan
ensin kirkas lapsuus tuoksuvine kukkineen, siintävine taivaineen,
välkkyvine purosineen ja kirjavine kivineen hiekkaisella rannalla,
johon aalto rauhoittavasti uupuu. Lapsuuden suuri ja lauha suvituuli
humisi sairaan sotilaan vuoteen äärellä, antaen taas uudelleen
ymmärtää, kuinka kallis ja ihana lahja elämä ja maailma ihmiselle on.
Sitten seurasi miehuuteen pyrkivä nuoruus, intohimojen herääminen,
kaipauksen ja tuskan, rajattoman riemun ja huuman aika, jolloin
suvituulen rinnalle ilmestyi myrskyn pauhua ja sinitaivaalle
ukkospilviä salamoineen ja rankkoine sateineen. Sitten tuli
miehuuden aika, kulku pitkin maailman koleata rantaa, jossa aurinko
paistaa harvoin ja jossa alakuloinen sade ja myrskyjen pieksämät
näivettyneet puut sekä synnin limaiset pimentosienet ovat kulkijan
kumppanina; jolloin mennyt kirkkaus on huvennut kapeaksi
valopiiruksi kaukana takaisella taivaanrannalla. Sillä tiellä kulkijan
rinnassa vaikertelee lapsuuden sielu valittavasti nyyhkyttäen ja
piiskuttaen kuin raukka rantasipi, joka kolkon meren ääreltä pyrähtää
lentoon ja itkee itkemistään elon päivien harmaata yksitoikkoisuutta
ja ilottomuutta, lennellen synkän syvyyden yllä, kuolema allansa
odottamassa. Ja sitten seuraa heräämisen hetki, jo käydyn ja
edessä olevan elämän tien esiintyminen salaman kirkkaassa
valossa, sen nouseminen pystyyn korkeiksi oman syyn ja synnin
ylipääsemättömiksi kallioiksi, ja pohjattoman hädän ja tuskan
tunteminen. Kuin haavoitettu lintu, jonka rintaan tappava nuoli on
iskenyt, kipeästi ja avuttomasti parahtaa ennen kuolemaansa,
ihmisen sielu silloin huutaa epätoivon huudon, joka kiirii
turvattomana pimeän ja rannattoman syvyyden yllä, vähitellen
haipuen pois kuin yksinäisen nyyhky hämärtyvässä kalmistossa.
Mutta juuri silloin, kun lopullinen toivottomuus on mykistämäisillään
sielun äänen ikuisesti, syttyykin taivaanrannalle suuri ja lempeä tähti,
jonka säteet saapuvat suloisena sanomana raadolliseen sydämeen.
Kuin lämmin kevätsade janoisen maan ne virkistävät sen, ja toivon
sekä heränneen uskon viheriä ruoho kaunistaa pian äsken niin
kuivan sielun kamaran. Ilon ja uskalluksen ihana kukka kohottaa jo
päätänsä, ja armon viileä, suloisesti soliseva lähde kumpuaa esiin
kastellen ja virvoittaen. Kohoaa puhtauden ja anteeksisaannin suuri
suvituuli, hajoittaen viimeisetkin sumupilvet, ja puhkeaa loistamaan
vapahduksen, iankaikkisen pelastuksen aurinko, jumalallisen
kirkkauden täydellisyys. Kaikki kahleet kirpoavat pois ja taistellut
henki lennähtää autuaana takaisin sinne, josta se on lainana ollut.

Lusti näki, kuinka kaukaa rupesi kuultamaan kirkas valo, joka


näytti lähestymistään lähestyvän. Nyt hän jo eroitti, mikä se oli: se oli
tuo ihana, valkea neito, jonka kuoleman hän oli nähnyt, ja kun se
saapui lähelle, ojensi se kutsuvasti kätensä häntä kohti. Hän
ymmärsi, että hänen oli nyt kuoltava, mutta ei tuntenut sen johdosta
pelkoa. Hän oli äsken elänyt uudelleen koko elämänsä ja
huomannut, ettei hän enää jaksaisi sitä jatkaa. Se oli ollut tuska ja
vaiva parhaillaankin ja hän halusi lepoon. Hän kuunteli tarkasti ja oli
eroittavinaan iankaikkisuuden rannattomuuden mahtavan kohinan.
Oudon viehättävästi lauloi se hänelle suuren ja rajattoman rauhan
ihanuutta, sellaisen rauhan, ettei ihminen eläessään voi sitä
ymmärtää, ja kun hän katsoi sinne päin, näki hän äkkiä, kuinka kaikki
se kaunis ja hyvä, joka hänen elonsa aikana oli taistellut
olemassaolostaan hänen sydämessään, oli siellä odottamassa
häntä, seisoen ikuisuuden yllä lumivalkoisena lempeytenä,
anteeksiantona ja inhimillisyyttä ymmärtävänä kaikkeuden isänä.

Lusti avasi äkkiä silmänsä ja katsoi iloisesti Santtepekkiin sanoen:

— Santtepekki, uskollinen ystävä, nyt aion kuolla. Kiitos nyt vain


kaikesta hyvyydestäsi.

Santtepekki painoi päänsä, voimatta puhua liikutukseltaan. Lusti


oli vähän aikaa hiljaa, hymyili sitten ja sanoi taas:

— Ethän ole minulle vihainen, vaikka soinkin sen lampaan


sydämen ja valehtelin?

Santtepekki itki katkerasti. Hänen kumaraiset, vanhat hartiansa


tärisivät ja kasvoille painettujen sormien välistä tippui kyyneleitä.
Lusti puhui taas:

— Etpä tiedä, mitä täällä tapahtui poissa ollessasi. Pelasin näet


paholaisen kanssa korttia ja menetin kaikki. Mutta kun se rupesi
vaatimaan sieluani peliin, sanoin minä jyrkästi, että ehei, poikaseni,
Lustin sielu kuuluu Jumalalle. Ja silloin paholainen lähti — ei
kestänyt pimeyden ruhtinas pyhän ristin edessä. Ja kun hän oli
mennyt, tunsin oloni suloiseksi. Tunsin Jumalan antaneen minulle
kaikki anteeksi, tappelut, juomingit ja jos mitkä rötökset. Ja niinpä nyt
lähden iloisena ja onnellisena tästä matoisesta maailmasta. Hyvästi!

Ja Surma, ihmisen uskollisin ja pettämättömin ystävä, ilmestyi


kynnykselle.

*****
Kun Santtepekki heräsi syvästä rukouksestaan, makasi Lusti
kalpeana ja kylmänä. Hänen kasvoilleen oli jäänyt kirkas ilme, joka
ihmeellisellä tavalla nuorensi häntä.

Santtepekki hautasi sotamies Lustin kirkkotarhan syrjäiseen


sopukkaan, tasoittaen mullan sileäksi kamaraksi. Mutta haudalle
kasvoi pian kaunis koivu, jonka oksilla kesän iloisimmat linnut
laulelivat hilpeitä liverryksiään, onnellisina ja surematta.

Toimitettuaan tämän ystävän-palveluksen Santtepekki lähti


huoaten etsimään Jeesusta. Se hyvä ihminen, jota hän oli lähtenyt
hakemaan, oli sattunut olemaan juoppo, hulivili sotamies;
Santtepekki epäili, voisiko hän puhua Jeesukselle ollenkaan Lusti-
rievusta.

XI

Tällävälin oli Jeesus kerennyt kulkea laajalti ympäri koko


Suomennientä; niin, eipä ollut sitä kotia ylpeästä kartanosta
pahaisimpaan tölliin saakka, jonka ovelle hän ei olisi kolkuttanut.
Kuta kauemmas hän kulki, sitä surullisemmaksi hän kävi, sillä hänen
kolkutukseensa vastattiin harvoin hänen toivomallaan tavalla. Äkkiä
syvästä unestaan heräävät tunsivat tulleensa ikävästi yllätetyiksi ja
ajoivat kolkuttajan pois pahoilla sanoilla ja kirouksillakin.

Saapuipa sitten Jeesus eräänä iltana muutamaan kylään, joka


tuntui tutulta. Niin, sehän oli sama, jossa he olivat Pietarin kanssa
puineet rikkaan miehen riihen. Siihen taloon ei siis ollut
yrittämistäkään. Jeesus hiipi kuitenkin iltahämärissä rikkaan miehen
ikkunan taakse ja kurkisti sisään.
Takassa paloi valkea ja rikas mies istui sen loisteessa, tuijottaen
tuleen. Hän näki sen hiilten häilyvässä ja muuttelevassa hehkussa
saman entisen näyn: kaksi vanhaa miestä, jotka liikkuivat tulen
keskellä, sytytellen hänen ahdostansa. Kipeä herätyksen ja
selvyyden saamisen tuska kaihersi silloin hänen sydäntään ja hän
huokasi raskaasti. Siitä pitäen hän oli etsinyt noita vanhuksia,
kysellen heitä kaikilta, mutta kukaan ei ollut tiennyt heistä mitään. Se
suretti rikasta miestä, sillä hän olisi tahtonut tavata heitä vielä kerran.

Mutta Jeesus ei nyt kolkuttanut eikä pyrkinyt sisään. Hän hiipi


hiljaa lepoon vaipuvan kylän kujannetta pitkin, katsellen sen
harmaita rakennuksia, korkeutta kohti ujuvaa tuuliviiriä ja nuokkuvaa
kaivonvinttiä. Tarhalta kuului lehmänkellon kalahdus, ja leppoisa
kytösavun tuntu leijaili lämpimässä ilmassa. Vihdoin hän saapui
aivan kylän laitaan, jossa pienoinen tölli lepäili matalan kivijalkansa
varassa kuin polvilleen lysähtäneenä, keskellä jo vanhenevia ja
ruohottuneita isompain rakennusten raunioita. Oven vierellä oli
humalasalko ja ikkunan alla ruusupensas, jonka kukkien valkoiset
lehdet jo olivat ruvenneet varisemaan. Niiden viimeisen tuoksun
häivähdys tuntui väreilevän töllin ympärillä. Jeesus hiipi ovelle ja
kolkutti siihen arkaillen ja varovasti. Kun ovi avautui, seisoi portailla
vanha, tutiseva kerjäläis-äijä, joka nöyrin sanoin aneli yösijaa ja
ruokaa. Töllin isäntä oli jo harmaapartainen vanhus hänkin ja hänen
sinisissä silmissään oli vakava, miettivä katse. Hän katseli vierastaan
tutkivasti ja sanoi sitten hiljaisella äänellä:

— Toki lienee vielä jäljellä vieraan vara. Käy sisään, vanha mies,
lepäämään. Lienet jo pitkänkin taipaleen kulkenut.

Kerjäläis-äijä meni tupaan isännän jäljessä. Se oli pieni ja köyhä,


mutta yhtä rikkautta siellä oli: puhtautta. Emäntä pyyhkäisi penkkiä
pöydän yläpäästä ja käski vierasta istumaan. Tämä esteli eikä
tahtonut ottaa isännän sijaa, mutta isäntä sanoi:

— Sinä olet vanhin, paikka kuuluu sinulle. Istuttiin ja oltiin vaiti,


kunnes isäntä alkoi kysellä kuulumisia. Ja silloin kerjäläis-äijä rupesi
kertomaan niistä pitkistä taipaleista, joita viimeksi oli katkaissut, ja
ihmisistä, joita oli tavannut. Ja kuta kauemmin isäntä häntä kuunteli,
sitä omituisemmalta hänestä rupesi tuntumaan; ukon kertomus loihti
hänen eteensä kuvan miehestä, joka lepäämättä vaeltaa
maailmassa, ovelta ovelle, sydämeltä sydämelle, ja painaa
sormensa sydänten hellimmälle ja salatuimmalle pontimelle,
koetellen, aukenisiko sisin komero. Hän tunsi kohoavansa ikäänkuin
ylös, josta ihmiselämän kaari näkyi hänelle kokonaisuudessaan,
kaikessa lyhyydessään ja väliaikaisuudessaan. "Tässäkö tämä nyt
on kaikki?" hän kysyi itseltään, ja vastasi huoaten mielessään:
"Tässä. Ei ole maailmassa muuta kuin turhuuksien turhuus ja kaiken
katoavaisuus. Ponnistelet voimaisi takaa ja haaveilet, aamulla
herätäksesi huomaamaan, ettet ole mitään saavuttanut; yhtä
korkealla on edessäsi mäen huippu, jolle et milloinkaan nouse. Tätä
varten ei ihminen voi olla luotu, vaan täytyy maallisen vaelluksen
suurine suruineen ja kaitaisine iloineen olla valmistusaste siihen, jota
sanomme autuudeksi". Ja kirkkaana täytti vanhan miehen sydämen
valoisa, häiriintymätön usko, joka oli häntä horjumatta saatellut
lapsuudesta asti tähän saakka. Hän pani kätensä ristiin ja sanoi
ikäänkuin omien ajatustensa lopputulokseksi:

— Välipä tällä, ihmisen elämällä. Kunhan parastansa koettaa,


niin…

Emäntä toi illallista, leipää ja kutun maitoa, sekä pyysi syömään.


Isäntä harvakseen kuin pyyteli anteeksi:

You might also like