Järjend (list)

Python-i tähtsaimate andmestruktuuride hulka kuulub kindlasti ka järjend, ehk list, kus elemendid moodustavad kindla järjestuse.

list_of_subjects = ['physics', 'chemistry', 'math', 'english']

Listi loomine käib nagu tavalise muutuja loomine, kuid listi elemendid asuvad kandilistes sulgudes ([]) ning on eraldatud komadega. Samuti ei pea järjendi elemendid olema sama tüüpi, ehk sobib ka selline konstruktsioon.

list_of_prices = ['free', 4.50, 3, 'cheap']

Samas võivad eri tüüpi elemendid omavahelisi vigu tekitada, seepärast ei ole mõningates teistes keeltes listis eri tüüpi elemendid lubatud.

Samuti on oluline teada, et igale elemendile järjendis vastab kindel number. Esimese elemendi positsiooniks, ehk indeksiks, on 0, teise elemendi omaks on 1, kolmanda 2 jne. Tänu kindlale järjestusele ja numbrilisele vastavusele on elemente lihtne kätte saada.

Elementidele ligi pääsemine

list_of_subjects = ['physics', 'chemistry', 'math', 'english']
list2 = [22, 32, 44, 82, 78, 15, 71]

print("list1[0]: ", list_of_subjects[0])
print("list2[1:5]: ", list2[1:5])

Selle koodi käivitamise tulemus:

list1[0]:  physics
list2[1:5]:  [32, 44, 82, 78]

Attention

Pöörake tähelepanu, et list2 elementidele ligipääsemisel [1:5] tähendab, et me saame elemente alates indeksist 1 (kaasa arvatud) kuni indeksini 5 (välja arvatud).

Samuti on väga oluline teada, kus asub viimane element. Selle saame kätte nii, et küsime tagantpoolt esimese elemendi.

print("Last element is: ", list_of_subjects[-1]) # --> Last element is: english

Järjendi uuendamine

Kui me tahame järjendi mingisse positsiooni uut elementi, siis käib see tavalise omistamisega.

list_of_subjects = ['physics', 'chemistry', 'math', 'english']

print("Value available at index 2: " + list_of_subjects[2])
list_of_subjects[2] = 'art'
print("New value available at index 2: " + list_of_subjects[2])

print(list_of_subjects)

Annab tulemuseks:

Value available at index 2: math
New value available at index 2: art
['physics', 'chemistry', 'art', 'english']

Samamoodi saab järjendisse lisada uusi elemente ilma omistamiseta, suurendades selle pikkust. Selleks kasutame sisseehitatud meetodi append(), mis lisab uue elemendi järjendi lõppu:

some_list = ['lists', 'are']

print(len(some_list))  # --> 2

some_list.append('cool')

print(some_list)  # --> ['lists', 'are', 'cool']
print(len(some_list))  # --> 3

Pöörake tähelepanu, et append() lisab alati väärtuse järjendi lõppu. Kui me tahame lisada uue elemendi listi algusesse või keskele, peame kasutama meetodit insert():

some_list.insert(0, 'Some')  # insert() takes two arguments: index and element to add

print(some_list)  # ['Some', 'lists', 'are', 'cool']

Järjendi elementide kustutamine

Järjendist saab elemente kustutada kolmel erineval viisil.

  1. Elemendi kustutamiseks asukoha, ehk indeksi järgi, on olemas meetod del. Indeksi määramata jätmisel eemaldatakse järjendi esimene liige.

list_of_subjects = ['physics', 'chemistry', 'math', 'english']

del list_of_subjects[1]
print(list_of_subjects)

Annab tulemuseks:

['physics', 'math', 'english']
  1. Elemendi kustutamiseks väärtuse järgi, on olemas meetod remove. See eemaldab järjendist esimese, ehk madalaima indeksiga elemendi, millel on sama väärtus.

list_of_subjects = ['physics', 'chemistry', 'math', 'english', 'math']

list_of_subjects.remove('math')
print(list_of_subjects)

Annab tulemuseks:

['physics', 'chemistry', 'english', 'math']
  1. Kolmandaks on olemas meetod pop, mis eemaldab järjendist elemendi indeksi järgi, sarnaselt del meetodile, kuid kahe olulise erinevusega. Esiteks eemaldab pop indeksi määramata jätmisel järjendi viimase, mitte esimese liikme. Teiseks tagastab pop eemaldatud liikme, ehk võimaldab eemaldatud liikmega kohe midagi ette võtta.

list_of_subjects = ['physics', 'chemistry', 'math', 'english']

print(list_of_subjects.pop(1))
print(list_of_subjects)

Annab tulemuseks:

chemistry
['physics', 'math', 'english']

Operatsioonid järjenditega

Operatsioonid järjenditega sarnanevad operatsioonidega sõnedega (Sõne (string)), kuid tulemuseks on järjend, mitte uus sõne.

Sisend

Väljund

Info

len([1, 2, 3])

3

järjendi elementide arvu leidmine

sum([1, 2, 3])

6

järjendi elementide summa

min([1, 2, 3])

1

leiab minimaalse elemendi

max([1, 2, 3])

3

leiab maksimaalse elemendi

sorted([7, 2, 3])

[2, 3, 7]

tagastab sorteeritud järjendi

[3, 2, 3].count(3)

2

tagastab elemendi esinemiste arvu

['he'] + ['llo']

['he', 'llo']

järjendite ühendamine

['Hi'] * 3

['Hi', 'Hi', 'Hi]

lubab järjendit korrata

3 in [1, 2, 3]

True

järjendisse kuulumise kontrollimine

Attention

Esimese elemendi indeksiks, on 0, teise elemendi omaks on 1, kolmanda 2 jne.

los = ['physics', 'chemistry', 'math', 'english']

Sisend

Väljund

Info

los[0]

physics

tagastab järjendi esimene element

los[2]

math

tagastab järjendi kolmanda elemendi

los[1:]

['chemistry', 'math', 'english']

tagastab järjendi elemendid teisest kuni viimaseni

los[1:3]

['chemistry', 'math']

tagastab järjendi elemendid teisest kuni kolmandani

los[-1]

english

tagastab järjendi viimase elemendi

Elementide ühekaupa läbi käimine

Kui soovitakse teha midagi iga järjendi elemendiga, siis kasutatakse tsüklit (data_iterations/loop). Võtmesõna end kasutame selleks, et kõik trükitud väärtused oleks samal real.

grades_this_semester = [1, 2, 2, 3, 4]

for grade in grades_this_semester:
    print(grade + 1, end=' ') # Prints 2 3 3 4 5

Samas kui me näiteks ei taha tegeleda kõikide elementidega, vaid osaga, siis saab kasutada range().

colors = ["red", "green", "blue", "purple"]
for i in range(len(colors) - 2):
   print(colors[i], end = ' ')  # Prints red green

Järjendi slice-imine kolme argumendiga

Kui meil on teada kindel järjendi struktuur ning soovime saada elemente mingi kindla sammuga on võimalik kasutada slice-imist kolme argumendiga. Järjendist on võimalik saada üksikuid elemente [] operaatoriga, mille tähistus on [start:stop:step].

Esimese elemendi indeks on järjendis indeksil 0 ja viimane indeksil len(list) - 1 või -1.

  • [start] indeks, kust alustada tükeldamist (kaasarvatud). Selle ärajätmisel eeldab Python, et tükeldamine algab algusest.

  • [stop] elemendi indeks, kus peatuda (seda elementi ei arvata vahemikku), indeksi ärajätmisel tükeldatakse lõpuni.

  • [step] sammu suurus itereerimisel, vaikimisi on see 1; -1 itereerib järjendi tagurpidi

# no pec # You can also edit the code colors = ["red", "green", "blue", "purple", "violet", "yellow", "pink", "orange"] print(colors[1:6:3]) # [step] can be omitted print(colors[1:4]) # [start] and [stop] can be omitted print(colors[::2]) # By choosing [step] to be -1, we get the reverse of original print(colors[::-1])

Annab tulemuseks:

['green', 'violet']
['green', 'blue', 'purple']
['red', 'blue', 'violet', 'pink']
['orange', 'pink', 'yellow', 'violet', 'purple', 'blue', 'green', 'red']

Slice-imine töötab sarnaselt range-e töötamisele, kus saab järjendile anda kolmanda arvu, mis määratakse sammuks, mis määrab ära kui mitu elementi jäetakse vahele. Näide kaustades range-e:

example_list = [i for i in range(100)]
print(example_list)

div_by_ten_list = []
for i in range(0, len(example_list), 10):
    div_by_ten_list.append(i)

print(div_by_ten_list)

Annab tulemuseks:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

Sama asja on võimalik teha järjendi slice-imisega, kui kasutada sama meetodit, mis järjendile ligipääsemisel kasutasime:

example_list = [i for i in range(100)]
print(example_list)
print(example_list[0:len(example_list):10])

Annab tulemuseks:

[0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99]
[0, 10, 20, 30, 40, 50, 60, 70, 80, 90]

Lisamaterjalid