You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
- 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
14
14
15
15
</text-box>
16
16
17
17
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.
19
19
20
20
```python
21
21
@@ -32,7 +32,7 @@ print(stora_bokstaver)
32
32
33
33
</sample-output>
34
34
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:
36
36
37
37
```python
38
38
@@ -57,7 +57,7 @@ P och e och t och e och r
57
57
58
58
</sample-output>
59
59
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:
61
61
62
62
```python
63
63
@@ -76,7 +76,7 @@ aoaioaeääee
76
76
77
77
</sample-output>
78
78
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:
80
80
81
81
```python
82
82
@@ -134,7 +134,7 @@ print(mening_utan_initialer)
134
134
135
135
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.
136
136
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`.
138
138
139
139
Funktionen ska fungera på följande sätt:
140
140
@@ -152,11 +152,11 @@ Det var en gång en python
152
152
153
153
</programming-exercise>
154
154
155
-
## Egna klasser och comprehensions
155
+
## Egna klasser och listbyggare
156
156
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.
158
158
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.
160
160
161
161
```python
162
162
@@ -188,7 +188,7 @@ Sverige
188
188
189
189
</sample-output>
190
190
191
-
I list comprehension ovan valde vi bara namnattributet från Land-objekten, så 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:
192
192
193
193
```python
194
194
@@ -205,9 +205,9 @@ if __name__ == "__main__":
205
205
print(land.namn)
206
206
```
207
207
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.
209
209
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.
211
211
212
212
```python
213
213
@@ -243,7 +243,7 @@ if __name__ == "__main__":
243
243
244
244
</sample-output>
245
245
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):
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.
305
305
306
306
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`.
307
307
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.
309
309
310
310
311
311
Funktionen ska fungera enligt följande:
@@ -338,7 +338,7 @@ Denna övning innehåller en aning modifierad version av klassen [Bostad](https:
338
338
339
339
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.
340
340
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`.
342
342
343
343
Koden för Bostad-klassen ingår i övningsmallen och ska inte ändras.
344
344
@@ -371,11 +371,11 @@ Kerava 4r och kök prisskillnad 16500 euro
371
371
372
372
</programming-exercise>
373
373
374
-
## Comprehensions och ordlistor
374
+
## Byggare och ordlistor
375
375
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.
377
377
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.
379
379
380
380
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:
381
381
@@ -394,7 +394,7 @@ print(tecken_antal)
394
394
395
395
</sample-output>
396
396
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:
398
398
399
399
`{<nyckeluttryck> : <värdeuttryck> för <föremål> i <serie>}`
400
400
@@ -427,7 +427,7 @@ if __name__ == "__main__":
427
427
428
428
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.
429
429
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`.
431
431
432
432
Funktionen ska fungera på följande sätt:
433
433
@@ -451,7 +451,7 @@ print(sanojen_langder)
451
451
452
452
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`.
453
453
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:
455
455
456
456
```txt
457
457
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
460
460
Remember, every list comprehension can be rewritten in for loop, but every for loop can’t be rewritten in the form of list comprehension.
461
461
```
462
462
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
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.
472
472
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.
0 commit comments