Kalo te përmbajtja

8 min lexim

American Corners

Listat

Çfarë është një listë

Deri tani çdo variabël ka mbajtur një vlerë të vetme: një numër, një fjalë, një breshkë. Por shumë punë reale kanë të bëjnë me shumë vlera njëherësh, si emrat e të gjithëve që ndihmojnë në workshop, ose orët me diell të matura çdo muaj për tetëdhjetë vjet. Një listë të lejon t'i mbash të gjitha bashkë në një enë të vetme të renditur.

Një listë krijohet me kllapa katrore dhe elementet ndahen me presje. Elementet mund të jenë fjalë, numra, ose çdo gjë tjetër.

teaching_assistants = ["Ana", "Ben", "Dea", "Ilir", "Nora"]
ages = [15, 15, 16, 14, 15]

Një listë është e renditur, që do të thotë se çdo element ka një pozicion të caktuar. Ky pozicion quhet indeks, dhe Python i numëron pozicionet duke nisur nga 0, jo nga 1. Kështu, në listën e mësipërme, "Ana" është në indeksin 0, "Ben" në indeksin 1 dhe "Dea" në indeksin 2. Një element e lexon duke vënë indeksin e tij në kllapa katrore.

print(teaching_assistants[2])
# Dea

Këshillë

Gabimi më i shpeshtë me listat është të harrosh se numërimi nis nga 0. Elementi i parë është lista[0], dhe i fundit i një liste me pesë elemente është lista[4], jo lista[5]. Nëse kërkon një indeks që nuk ekziston, programi ndalon me gabim.

Ndërtimi dhe ndryshimi i një liste

Një listë nuk ngrin sapo e krijon. Mund të shtosh në të, të heqësh prej saj, dhe ta rirendisësh ndërsa programi punon.

Për të shtuar një element në fund, përdor append. Ndihmësit e rinj vazhdojnë të vijnë, kështu që:

teaching_assistants = ["Ana", "Ben", "Dea", "Ilir", "Nora"]
teaching_assistants.append("Sara")
print(teaching_assistants)
# ['Ana', 'Ben', 'Dea', 'Ilir', 'Nora', 'Sara']

Për të kaluar nëpër çdo element me radhë, bëj një cikël drejtpërdrejt mbi listën. Për këtë nuk të duhen indekse.

for name in teaching_assistants:
    print(name)

Për të hequr një element, përdor remove me vetë vlerën. Për të futur një element të ri në një pozicion të zgjedhur, përdor insert me indeksin të parin dhe vlerën të dytën. Ndërsa pop heq elementin e fundit dhe ta kthen ty.

teaching_assistants.remove("Ilir")      # heq Ilirin sipas emrit
teaching_assistants.insert(1, "Uran") # vendos Uranin në indeksin 1
last = teaching_assistants.pop()          # heq dhe ruan të fundit
print(teaching_assistants)
# ['Ana', 'Uran', 'Ben', 'Dea', 'Nora']

Dy mjete të tjera që do t'i përdorësh vazhdimisht. len të thotë sa elemente ka një listë, ndërsa prerja (slicing) nxjerr një varg elementesh duke përdorur dy indekse, atë të fillimit dhe atë të ndalimit. Si gjithçka në Python, indeksi i ndalimit nuk përfshihet.

print(len(teaching_assistants))
# 5
print(teaching_assistants[1:3])
# ['Uran', 'Ben']

Zgjidhja e problemeve me lista

Sapo mund të mbash një grumbull numrash, shumica e pyetjeve reale kthehen në një cikël të shkurtër mbi atë grumbull. Ja tri funksione të vogla që dalin shpesh: numri më i madh, shuma, dhe vetëm ata tek.

def max_list(numbers):
    largest = numbers[0]
    for n in numbers:
        if n > largest:
            largest = n
    return largest

def sum_list(numbers):
    total = 0
    for n in numbers:
        total += n
    return total

def odds_list(numbers):
    result = []
    for n in numbers:
        if n % 2 == 1:
            result.append(n)
    return result

Të tria ndjekin të njëjtën formë: nis me një përgjigje të deritanishme, ec nëpër listë një element në herë, dhe përditëso përgjigjen. odds_list ndërton një listë krejt të re me append në vend që të ndjekë një numër të vetëm. Duke i provuar:

ages = [15, 15, 16, 14, 15, 14]
print(max_list(ages))   # 16
print(sum_list(ages))   # 89
print(odds_list(ages))  # [15, 15, 15]

Ciklet e ndërthurura dhe bota e të dhënave

Ndonjëherë një cikël i vetëm nuk mjafton. Le të themi se ke 4 ngjyra bluzash dhe 3 ngjyra xhinsesh dhe do çdo veshje të mundshme. Për çdo bluzë duhet të kalosh nëpër të gjitha xhinset, pra një cikël brenda një cikli.

shirts = ["white", "red", "blue", "green"]
jeans = ["light blue", "dark blue", "black"]

for shirt in shirts:
    for jean in jeans:
        print(shirt + " bluzë, " + jean + " xhinse")

Cikli i jashtëm zgjedh një bluzë dhe e mban të palëvizur ndërsa cikli i brendshëm rendit të tria xhinset, pastaj cikli i jashtëm kalon te bluza tjetër. Katër bluza herë tri xhinse japin dymbëdhjetë veshje.

Po ky model është mënyra si punohet me të dhëna. Një listë mund të mbajë lista të tjera, dhe pikërisht kështu duket një tabelë numrash në Python: një listë e brendshme për çdo rresht. Ja një copëz e vogël të dhënash reale, orët me diell të matura në Oksford, me një resht për çdo vit dhe një kolonë për çdo muaj.

data = [
    [43.8, 60.5, 190.2],   # viti 1: Jan, Shk, Mar
    [49.9, 54.3, 109.7],   # viti 2
    [63.7, 72.0, 142.3],   # viti 3
]

monthly_mean = []
n = len(data)            # numri i viteve
for m in range(3):       # një kolonë për çdo muaj
    s = 0
    for year in data:    # zbrit nëpër reshtat
        s += year[m]     # shto vlerën e këtij viti për muajin m
    monthly_mean.append(s / n)

print(monthly_mean)
# afërsisht [52.5, 62.3, 147.4]

Cikli i jashtëm fikson një muaj, cikli i brendshëm mbledh atë muaj në çdo vit, dhe mesatarja shkon te monthly_mean. Me të gjitha tetëdhjetë vitet e të dhënave, po këto tetë reshta do të të thoshin cili muaj në Oksford ka motin më të mirë. Kjo është e gjithë ideja e programimit në një botë të të dhënave: një cikël i vogël e i qartë që bën numërimin që askush nuk do të donte ta bënte me dorë.

Praktikë

Zgjero listën data me një muaj të katërt duke shtuar edhe një numër në çdo resht, pastaj ndrysho range(3)range(4) që cikli ta mbulojë. Ekzekutoje dhe kontrollo që monthly_mean tani ka katër mesatare.

Provo veten

  1. Në listën ["Ana", "Ben", "Dea"], cili indeks mban "Dea", dhe çfarë do të bënte print(lista[3])?
  2. Cili është ndryshimi mes append dhe insert kur shton një element në një listë?
  3. Në ciklin e ndërthurur të orëve me diell, pse shuma s rikthehet në 0 në fillim të çdo muaji dhe jo vetëm një herë në fillim fare?

Nga vjen ky mësim

Ndërtuar mbi

  • Programming in a Data World: Leksioni 6 (Listat + ciklet e ndërthurura)
  • Fletorja e leksionit: analiza e të dhënave me listë të ndërthurur (orët me diell në Oksford)

Kurset e alphaPlan ndërtohen mbi programe të zhvilluara në klasë, e nuk shpiken për web-in. Kur një pohim mbështetet mbi një standard të jashtëm ose mbi një rast të raportuar, ai emërtohet më sipër që ta kontrollosh vetë e të mos na besosh në fjalë.

Ky kurs u zhvillua nga alphaPlan Center mbi bazën e programeve të realizuara në partneritet me rrjetin American Corners.

Gjete diçka të paqartë, të vjetruar ose që mund të përmirësohet? Sugjero një përmirësim