Skip to content

Commit 272df3e

Browse files
authored
Update 2-mer-om-comprehensions.md
updated language, Swedish terminology
1 parent 3544203 commit 272df3e

File tree

1 file changed

+28
-28
lines changed

1 file changed

+28
-28
lines changed

data/osa-11/2-mer-om-comprehensions.md

Lines changed: 28 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,21 @@
11
---
22
path: '/osa-11/2-mer-om-comprehensions'
3-
title: 'Mer om comprehensions'
3+
title: 'Mer om listbyggare'
44
hidden: false
55
---
66

77
<text-box variant='learningObjectives' name='Inlärningsmål'>
88

99
Efter den här delen
1010

11-
- Kommer du att kunna använda comprehensions med strängar
12-
- Vet du hur du använder comprehensions med dina egna klasser
13-
- Kommer du att kunna skapa ordlistscomprehensions
11+
- Kommer du att kunna använda listbyggare med strängar
12+
- Vet du hur du använder listbyggare med dina egna klasser
13+
- Kommer du att kunna skapa ordlissbyggare
1414

1515
</text-box>
1616

1717

18-
Listor är kanske det vanligaste målet för comprehensions, men comprehensions fungerar på alla serier av föremål, inklusive strängar. Liksom listexemplen i föregående avsnitt, ifall en list comprehension utförs på en sträng, plockas föremålen (dvs. tecknen) i strängen en efter en, bearbetas enligt det givna uttrycket och lagras i en lista.
18+
Listor är kanske det vanligaste föremålet för byggare, men de fungerar på alla serier av föremål, inklusive strängar. Liksom listexemplen i föregående avsnitt, ifall en byggare används på en sträng, plockas elementen (dvs. tecknen) i strängen ett i taget, bearbetas enligt det givna uttrycket och lagras sedan i en lista.
1919

2020
```python
2121

@@ -32,7 +32,7 @@ print(stora_bokstaver)
3232

3333
</sample-output>
3434

35-
Resultatet är en lista, vilket dikteras av parentesnotationen runt comprehension-satsen. Om vi ville ha en sträng istället skulle vi kunna använda strängmetoden `join` för att tolka listan till en sträng. Kom ihåg att metoden anropas på den sträng som vi vill använda som "lim" mellan tecknen. Låt oss ta en titt på några exempel:
35+
Resultatet är en lista, vilket avgörs av hakklamrarna runt byggaren. Om vi i stället vill ha en sträng skulle vi kunna använda strängmetoden `join` för att presentera listan som en sträng. Kom ihåg att metoden anropas på den sträng som vi vill använda som "lim" mellan tecknen. Låt oss ta en titt på några exempel:
3636

3737
```python
3838

@@ -57,7 +57,7 @@ P och e och t och e och r
5757

5858
</sample-output>
5959

60-
List comprehensions och `join`-metoden gör det enkelt att skapa nya strängar baserade på andra strängar. Vi kan t.ex. skapa en sträng som bara innehåller vokalerna från en annan sträng:
60+
Listbyggare och `join`-metoden gör det enkelt att skapa nya strängar baserade på andra strängar. Vi kan t.ex. skapa en sträng som bara innehåller vokalerna från en annan sträng:
6161

6262
```python
6363

@@ -76,7 +76,7 @@ aoaioaeääee
7676

7777
</sample-output>
7878

79-
I exemplet ovan står list comprehension och `join`-metoden på separata rader, men de kan kombineras till ett enda uttryck:
79+
I exemplet ovan står listbyggaren och `join`-metoden på separata rader, men de kan kombineras till ett enda uttryck:
8080

8181
```python
8282

@@ -134,7 +134,7 @@ print(mening_utan_initialer)
134134

135135
Skapa funktionen `filtrera_forbjudna(strang: str, forbjuden: str)` som tar två strängar som argument. Funktionen ska returnera en ny version av den första strängen. Den ska inte innehålla tecken från den andra strängen.
136136

137-
Funktionen bör implementeras med hjälp av list comprehension. Funktionen får vara högst tre rader lång, inklusive rubrikraden som börjar med nyckelordet `def`.
137+
Funktionen bör implementeras med hjälp av listbyggare. Funktionen får vara högst tre rader lång, inklusive rubrikraden som börjar med nyckelordet `def`.
138138

139139
Funktionen ska fungera på följande sätt:
140140

@@ -152,11 +152,11 @@ Det var en gång en python
152152

153153
</programming-exercise>
154154

155-
## Egna klasser och comprehensions
155+
## Egna klasser och listbyggare
156156

157-
Comprehensions kan vara ett användbart verktyg för att bearbeta eller formulera instanser av dina egna klasser, vilket vi kommer att se i följande exempel.
157+
Listbyggare kan vara ett användbart verktyg för att bearbeta eller formulera instanser av dina egna klasser, vilket vi kommer att se i följande exempel.
158158

159-
Låt oss först ta en titt på klassen `Land` som är en enkel modell för ett enda land, med attribut för namn och befolkning. I huvudfunktionen nedan skapar vi först några Land-objekt och använder sedan en list comprehension för att bara välja dem vars befolkning är större än fem miljoner.
159+
Låt oss först ta en titt på klassen `Land` som är en enkel modell för ett enda land, med attribut för namn och befolkning. I huvudfunktionen nedan skapar vi först några Land-objekt och använder sedan en listbyggare för att bara välja dem vars befolkning är större än fem miljoner.
160160

161161
```python
162162

@@ -188,7 +188,7 @@ Sverige
188188

189189
</sample-output>
190190

191-
I list comprehension ovan valde vi bara namnattributet från Land-objekten, innehållet i listan kunde skrivas ut direkt. Vi skulle också kunna skapa en ny lista med länderna och komma åt namnattributet i `for`-loopen. Detta skulle vara användbart om samma lista med länder skulle användas senare i programmet, eller om vi behövde befolkningsattributet i `for`-loopen också:
191+
I listbyggaren ovan valde vi bara namnattributet från Land-objekten, varvid innehållet i listan kunde skrivas ut direkt. Vi skulle också kunna skapa en ny lista med länderna och komma åt namnattributet i `for`-loopen. Detta vore användbart om samma lista med länder skulle användas senare i programmet, eller om vi också behövde befolkningsattributet i `for`-loopen:
192192

193193
```python
194194

@@ -205,9 +205,9 @@ if __name__ == "__main__":
205205
print(land.namn)
206206
```
207207

208-
I nästa exempel har vi en klass som heter `Fotlopp` som modellerar ett enskilt lopp med attribut för loppets längd och namn. Vi kommer att använda list comprehension för att skapa `Fotlopp`-objekt baserat på en lista med tävlingslängder.
208+
I nästa exempel har vi en klass som heter `Fotlopp` som modellerar ett enskilt lopp med attribut för loppets längd och namn. Vi kommer att använda listbyggrare för att skapa `Fotlopp`-objekt utifrån en lista med tävlingslängder.
209209

210-
Parametern `namn` har ett standardvärde i konstruktorn för `Fotlopp`-klassen, vilket är varför vi inte behöver skicka namnet som ett argument.
210+
Parametern `namn` har ett standardvärde i konstruktorn för `Fotlopp`-klassen, och därför behöver vi inte skicka namnet som argument.
211211

212212
```python
213213

@@ -243,7 +243,7 @@ if __name__ == "__main__":
243243

244244
</sample-output>
245245

246-
Låt oss nu ta reda på vad som gör en serie objekt "begripliga" (“comprehendible”). I föregående del lärde vi oss hur vi kan göra våra egna klasser itererbara. Det är exakt samma funktion som också möjliggör list comprehension. Om din egen klass är itererbar kan den användas som grund för en list comprehension. Följande klassdefinitioner är kopierade direkt från [modul 10](https://rage.github.io/ohjelmointi-24-sv/osa-10/3-objektorienterade-programmeringstekniker):
246+
Låt oss nu ta reda på vad som gör en serie objekt "begripliga" (“comprehendible”). I föregående del lärde vi oss hur vi kan göra våra egna klasser itererbara. Det är exakt samma funktion som också möjliggör listbyggare. Om din egen klass är itererbar kan den användas som grund för en listbyggare. Följande klassdefinitioner är kopierade direkt från [modul 10](https://rage.github.io/ohjelmointi-24-sv/osa-10/3-objektorienterade-programmeringstekniker):
247247

248248
```python
249249

@@ -301,11 +301,11 @@ if __name__ == "__main__":
301301

302302
<programming-exercise name='Affärslistans produkter' tmcname='osa11-09_affarslistans_produkter'>
303303

304-
I modul 10 skapade du en [itererbar affärslista](https://rage.github.io/ohjelmointi-24-sv/osa-10/3-objektorienterade-programmeringstekniker). Objekt av en itererbar klass kan användas med list comprehensions. Uppgiftsmallen innehåller en avskalad version av `Affarslista` med knappt tillräckligt funktion för denna övning.
304+
I modul 10 skapade du en [itererbar affärslista](https://rage.github.io/ohjelmointi-24-sv/osa-10/3-objektorienterade-programmeringstekniker). Objekt av en itererbar klass kan användas med listbyggare. Uppgiftsmallen innehåller en avskalad version av `Affarslista` med knappt tillräckligt funktion för denna övning.
305305

306306
Skapa en funktion med namnet `affarslistans_produkter(affarslista, antal: int)` som tar som argument ett affarslista-objekt och ett heltalsvärde. Funktionen returnerar en lista av produktnamn. Listan borde inkludera endast produkter som har åtminstone ett lika stort antal som parametern `antal`.
307307

308-
Funktionen bör implementeras med hjälp av list comprehension. Funktionen får vara högst två rader lång, inklusive rubrikraden som börjar med nyckelordet `def`. Klassdefinitionen för `Affarslista` bör _inte_ modifieras.
308+
Funktionen bör implementeras med hjälp av listbyggare. Funktionen får vara högst två rader lång, inklusive rubrikraden som börjar med nyckelordet `def`. Klassdefinitionen för `Affarslista` bör _inte_ modifieras.
309309

310310

311311
Funktionen ska fungera enligt följande:
@@ -338,7 +338,7 @@ Denna övning innehåller en aning modifierad version av klassen [Bostad](https:
338338

339339
Skapa en funktion med namnet `billigare(bostader: list, jamforelse: Bostad)` som tar en lista med bostäder och ett enda Bostad-objekt som sina argument. Funktionen ska returnera en lista som endast innehåller de bostäder i den ursprungliga listan som är billigare än jämförelsebostaden, tillsammans med prisskillnaden. Föremålen i den returnerade listan bör vara tupler, där det första föremålet är själva bostaden och den andra är prisskillnaden.
340340

341-
Funktionen bör implementeras med hjälp av list comprehension. Funktionen får vara högst två rader lång, inklusive rubrikraden som börjar med nyckelordet `def`.
341+
Funktionen bör implementeras med hjälp av listbyggare. Funktionen får vara högst två rader lång, inklusive rubrikraden som börjar med nyckelordet `def`.
342342

343343
Koden för Bostad-klassen ingår i övningsmallen och ska inte ändras.
344344

@@ -371,11 +371,11 @@ Kerava 4r och kök prisskillnad 16500 euro
371371

372372
</programming-exercise>
373373

374-
## Comprehensions och ordlistor
374+
## Byggare och ordlistor
375375

376-
Det finns inget i sig "list-aktigt" med comprehensions. Resultatet är en lista eftersom comprehension-satsen är inkapslad i hakparenteser, som indikerar en Python-lista. Förståelser fungerar lika bra med Python-ordlistor om du använder rundparenteser istället. Kom dock ihåg att ordlistor kräver nyckel-värde-par. Båda måste anges när en ordlista skapas, även när det gäller comprehensions.
376+
Det finns inget i sig "listaktigt" med byggarna. Resultatet är en lista eftersom byggaren är inkapslad i hakparenteser, som indikerar en Python-lista. Förståelser fungerar lika bra med Python-ordlistor om du använder rundparenteser istället. Kom dock ihåg att ordlistor kräver nyckel-värde-par. Båda måste anges när en ordlista skapas, även när det gäller byggare.
377377

378-
Grunden för en comprehension kan vara vilken itererbar serie som helst, vare sig det är en lista, en sträng, en tupel, en ordlista, någon av dina egna itererbara klasser och så vidare.
378+
Grunden för en byggare kan vara vilken itererbar serie som helst, vare sig det är en lista, en sträng, en tupel, en ordlista, någon av dina egna itererbara klasser och så vidare.
379379

380380
I följande exempel använder vi en sträng som bas för en ordlista. Ordlistan innehåller alla unika tecken i strängen, tillsammans med antalet gånger de förekommer:
381381

@@ -394,7 +394,7 @@ print(tecken_antal)
394394

395395
</sample-output>
396396

397-
Principen för comprehension-satsen är exakt densamma som för listor, men i stället för ett enda värde består uttrycket nu av en nyckel och ett värde. Den allmänna syntaxen ser ut så här:
397+
Principen för byggaren är exakt densamma som för listor, men i stället för ett enda värde består uttrycket nu av en nyckel och ett värde. Den allmänna syntaxen ser ut så här:
398398

399399
`{<nyckeluttryck> : <värdeuttryck> för <föremål> i <serie>}`
400400

@@ -427,7 +427,7 @@ if __name__ == "__main__":
427427

428428
Skapa en funktion med namnet `langder(strangar: list)` som tar en lista med strängar som sitt argument. Funktionen ska returnera en ordlista med strängarna i listan som nycklar och deras längder som värden.
429429

430-
Funktionen bör implementeras med en ordlistscomprehension. Funktionen får vara högst två rader lång, inklusive rubrikraden som inleds med nyckelordet `def`.
430+
Funktionen bör implementeras med en ordlistbyggare. Funktionen får vara högst två rader lång, inklusive rubrikraden som inleds med nyckelordet `def`.
431431

432432
Funktionen ska fungera på följande sätt:
433433

@@ -451,7 +451,7 @@ print(sanojen_langder)
451451

452452
Skapa en funktion med namnet `vanligaste_orden(filnamn: str, nedre_grans: int)` som tar ett filnamn och ett heltalsvärde som en nedre gräns som sina argument. Funktionen ska returnera en ordlista som innehåller antalet förekomster av de ord som förekommer minst det antal gånger som anges i parametern `nedre_grans`.
453453

454-
Anta t.ex. att funktionen används för att bearbeta en fil med namnet comprehensions.txt med följande innehåll:
454+
Anta t.ex. att funktionen används för att bearbeta en fil med namnet byggare.txt med följande innehåll:
455455

456456
```txt
457457
List comprehension is an elegant way to define and create lists based on existing lists.
@@ -460,16 +460,16 @@ However, we should avoid writing very long list comprehensions in one line to en
460460
Remember, every list comprehension can be rewritten in for loop, but every for loop can’t be rewritten in the form of list comprehension.
461461
```
462462

463-
När funktionen anropas med argumenten `vanligaste_orden("comprehensions.txt", 3)` ska den returnera
463+
När funktionen anropas med argumenten `vanligaste_orden("byggare.txt", 3)` ska den returnera
464464

465465
<sample-output>
466466

467-
{'comprehension': 4, 'is': 3, 'and': 3, 'for': 3, 'list': 4, 'in': 3}
467+
{'byggare': 4, 'is': 3, 'and': 3, 'for': 3, 'list': 4, 'in': 3}
468468

469469
</sample-output>
470470

471471
Observera att bokstävernas versaler påverkar resultatet och att alla böjda former är unika ord i den här övningen. Det vill säga att orden `List`, `lists` och `list` är separata ord här, och endast `list` har tillräckligt många förekomster för att komma med i den returnerade listan. Alla skiljetecken ska tas bort innan du räknar upp förekomsterna.
472472

473-
Det är upp till dig att bestämma hur detta ska implementeras. Det enklaste sättet skulle troligen vara att använda list- och ordlistsscomprehension.
473+
Det är upp till dig att bestämma hur detta ska implementeras. Det enklaste sättet skulle troligen vara att använda list- och ordlistsbyggare.
474474

475475
</programming-exercise>

0 commit comments

Comments
 (0)