Göm meny

Pythonuppgift 3.2

Skriv lösningarna till uppgifterna i en och samma fil och testa koden själv innan du använder rättningsskriptet. Att kunna testa sin kod är en viktig del av att programmera!

Att lära dig från uppgifterna

  • Bearbetning av nästlade-strukturer

Godkänt

För att få godkänt krävs 100 poäng.

Uppgift 3.2.1 (10p)

Skriv funktionen sum_of_ints2(value_list) som tar in en lista med listor av värden som argument. Funktionen ska returnera summan av alla heltal som finns i de nästlade listorna.

Exempel: sum_of_ints2([["a", 1], [2, 3.0, "hej"]]) ska returnera 3.

Uppgift 3.2.2 (10p)

Skriv funktionen flatten_list1(list_of_lists) som får in en nästlad lista. De inre listorna innehåller inga listor. Funktionen ska returnera en icke-nästlad lista som innehåller alla värden i de inre listorna.

Om list_of_values är [[1, 2], [3], [1, 2, 3]] så ska funktionen returnera listan [1, 2, 3, 1, 2, 3].

Uppgift 3.2.3 (20p)

Skriv funktionen flatten_list2(list_of_lists) som får in en lista som både innehåller listor och vanliga värden. De inre listorna innehåller dock inga listor. Funktionen ska returnera en icke-nästlad lista som innehåller alla värden i de inre listorna, samt värdena som ligger direkt i listan.

Om list_of_values är [[1, 2], [3], 4, [1, 2, 3], 4, 5] så ska funktionen returnera listan [1, 2, 3, 4, 1, 2, 3, 4, 5].

Uppgift 3.2.4 (10p)

Skriv funktionen get_first_column(matrix) som tar in en nästlad lista som representerar en matris. Varje element i matrix är alltså en lista som representerar en rad i matrisen. Alla listor är lika långa. Se exemplet nedan.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
# nedan är en nästlad lista som representerar en 3x3-matris
m1 = [[1, 2, 4],
      [3, 0, 6],
      [0, 5, 1]]

# nedan är en nästlad lista som representerar en 3x4-matris
m2 = [[1, 2, 4, 5],
      [3, 0, 6, 5],
      [0, 5, 1, 5]]

# nedan är en nästlad lista som representerar en 4x2-matris
m3 = [[1, 2],
      [3, 0],
      [0, 5],
      [4, 7]]

Funktionen get_first_column(matrix) ska returna en lista som innehåller värdena i den första kolumnen i matrisen som en lista. För m1 ska alltså listan [1, 3, 0] returneras. För m2 ska [1, 3, 0] returnaeras. För m3 ska [1, 3, 0, 4] returneras.

Tips: För att komma åt det första elementet i den första listan i m definierad ovan, skriver man m[0][0]. För att komma åt det tredje elementet i den andra listan skriver man m[1][2].

Uppgift 3.2.5 (20p)

Skriv funktionen get_nth_column(n, matrix) som tar in en nästlad lista som representerar en matris. Varje element i matrix är alltså en lista som representerar en rad i matrisen. Alla listor är lika långa.

Funktionen get_nth_column(n, matrix) ska returnera kolumnen n, där den första kolumnen har n == 1.

Uppgift 3.2.6 (20p)

Skriv funktionen get_all_columns(matrix) som tar in en nästlad lista som representerar en matris. Varje element i matrix är alltså en lista som representerar en rad i matrisen. Alla listor är lika långa.

Funktionen get_all_columns(matrix) ska returnera alla kolumner i matrisen matrix som en lista. Följande lista ska alltså returneras givet m1 som definierad i uppgift 3.2.4:

1
[[1, 3, 0], [2, 0, 5], [4, 6, 1]]

Uppgift 3.2.7 (20p)

Skriv funktionen scalar_product(vec1, vec2) som tar in två vektorer bestående av listor och returnerar skalärprodukten för listorna. Båda listorna är lika långa.

Skalärprodukten räknas ut enligt nedan:

$(1, 2, 4) \cdot (1, 3, 0) = 1 \times 1 + 2 \times 3 + 4 \times 0 = 7$

Exempel:

1
2
>>> scalar_product([1, 1, 1], [2, 2, 2])
6

Uppgift 3.2.8 (25p)

Skriv funktionen matrix_square(matrix) som ska returnera kvadraten av matrisen matrix. Varje element $a_{ij}$ i den nya matrisen fås av skalärprodukten av rad $i$ med kolumn $j$.

Om vi använder oss av samma matris om i exemplet i uppgift 3.2.4

1
2
3
4
# nedan är en nästlad lista som representerar en 3x3-matris
m = [[1, 2, 4],
     [3, 0, 6],
     [0, 5, 1]]

så är elementet på den första raden i den första kolumnen i den nya matrisen skalärprodukten av den första raden i m och den första kolumnen i m.

Elementet på första raden, andra kolumnen är $(1, 2, 4) \cdot (2, 0, 5) = 22$ och så vidare. Den nya matrisen som matrix_square(matrix) ska returnera givet m som input är alltså

1
2
3
[[7, 22, 20],
 [3, 36, 18],
 [15, 5, 31]]

Du får använda funktionerna du skrivit i tidigare uppgifter.


Sidansvarig: Johan Falkenjack
Senast uppdaterad: 2023-01-15