7 svar
361 visningar
KriAno 434
Postad: 11 nov 2019 16:32 Redigerad: 11 nov 2019 16:35

Vad betyder det här?

Hej!

Vad betyder det här och vad är det som händer? (rad 8):

return max(n, s(l[n:]) if l else 0)

Tacksam för hjälp!

Mvh KriAno

PeBo 540
Postad: 11 nov 2019 16:42

l[n:] är slutet av listan efter det n:te elementet om det var det du tänkte på?

Laguna Online 30497
Postad: 11 nov 2019 16:43

Du har nog sett alla beståndsdelar redan, utom möjligen

a if b else c

är ett uttryck som evalueras till antingen a eller c. Om b är sant så blir det a, annars c.

KriAno 434
Postad: 11 nov 2019 19:57 Redigerad: 11 nov 2019 20:51

Ok tack för svar! :)

Men vad betyder det första n:et, och if l?:

max(n, s(l[n:]) if l else 0)

Laguna Online 30497
Postad: 11 nov 2019 22:41
KriAno skrev:

Ok tack för svar! :)

Men vad betyder det första n:et, och if l?:

max(n, s(l[n:]) if l else 0)

n är bara nåt tal, som har räknats ut i loopen innan. Vad den här koden faktiskt gör blir nästa steg att ta reda på.

Eftersom l är en lista så är "if l" samma sak som "if l != []". Tom lista räknas som falsk i booleska sammanhang i Python, liksom 0, None och några andra objekt. Ibland praktiskt, ibland en källa till fel.

KriAno 434
Postad: 12 nov 2019 20:13 Redigerad: 12 nov 2019 20:15
Laguna skrev:
KriAno skrev:

Ok tack för svar! :)

Men vad betyder det första n:et, och if l?:

max(n, s(l[n:]) if l else 0)

n är bara nåt tal, som har räknats ut i loopen innan. Vad den här koden faktiskt gör blir nästa steg att ta reda på.

Eftersom l är en lista så är "if l" samma sak som "if l != []". Tom lista räknas som falsk i booleska sammanhang i Python, liksom 0, None och några andra objekt. Ibland praktiskt, ibland en källa till fel.

Ok tack! Har dock två fundering:

1. Jag förstår inte riktigt hur max fungerar här:

max(n, s(l[n:]) if l else 0)

Från vad tar programmet det högsta värdet? 

2. Vad menas med else 0?

jek7 35 – Fd. Medlem
Postad: 13 nov 2019 17:22

man kan skriva om uttrycket såhär, förstår du det bättre då?:

if len(l) == 0:

 x = 0

else:

 x = s(l[n:])

 

return max(n, x)

Laguna Online 30497
Postad: 13 nov 2019 17:54
KriAno skrev:
Laguna skrev:
KriAno skrev:

Ok tack för svar! :)

Men vad betyder det första n:et, och if l?:

max(n, s(l[n:]) if l else 0)

n är bara nåt tal, som har räknats ut i loopen innan. Vad den här koden faktiskt gör blir nästa steg att ta reda på.

Eftersom l är en lista så är "if l" samma sak som "if l != []". Tom lista räknas som falsk i booleska sammanhang i Python, liksom 0, None och några andra objekt. Ibland praktiskt, ibland en källa till fel.

Ok tack! Har dock två fundering:

1. Jag förstår inte riktigt hur max fungerar här:

max(n, s(l[n:]) if l else 0)

Från vad tar programmet det högsta värdet? 

2. Vad menas med else 0?

1. max får två tal som argument.

2.Det svarade jag på i mitt första svar. 

Svara
Close