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. Försök dock att lösa alla uppgifter då inte alla fel upptäcks av rättningsskriptet men om ni har lite marginal kan ni kanske bli godkända även om assistenten som rättar hittar något sådant fel.

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.

# 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, 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:

>>> 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

# 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å

[[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