1 van 1

Programmeren in python

Geplaatst: ma 06 jun 2011, 12:31
door Strobo
Afbeelding

Ik heb een probleem in Python.

In de bijgevoegde code heb ik deze in het rood omkaderd.

De bedoeling is de lengte van "anal2" en "sim" gelijk te krijgen.
if len(anal2) != len(sim):
We stellen dus als dit niet gelijk is we het minimum bepalen van de lengte van beide reeksen, deze noemen we de "lim".
lim = min(len(anal2), len(sim))
Maar aan de laatste stap kan ik niet uit wat er gebeurd? We herdefiniƫren "sim" als volgt.
sim = sim[:lim-len(sim))]
Kan iemand me uitleggen wat er hier gebeurd? Want heb er al een hele tijd over liggen nadenken en kom er maar niet op.. Want als "lim" gelijk is aan "len(sim)" dan wordt je lengte van de nieuwe "sim" toch 0?

Re: Programmeren in python

Geplaatst: ma 06 jun 2011, 12:38
door EvilBro

Code: Selecteer alles

if len(a) != len(b):

   lim = min(len(a), len(b))

   a = a[:(lim - len(a))]
Stel dat len(a) = 15 en len(b) = 10, wat is dan lim-len(a)?

Re: Programmeren in python

Geplaatst: ma 06 jun 2011, 12:42
door Strobo
In dat geval is het -5. Maar is het dan zo dat je de 5de laatste term in a dan pakt als nieuwe laatste term?
EvilBro schreef:

Code: Selecteer alles

if len(a) != len(b):

   lim = min(len(a), len(b))

   a = a[:(lim - len(a))]
Stel dat len(a) = 15 en len(b) = 10, wat is dan lim-len(a)?
Maar in ons geval staat er:
EvilBro schreef:

Code: Selecteer alles

if len(a) != len(b):

   lim = min(len(a), len(b))

   a = a[:(lim - len(b))]
Stel dat len(a) = 15 en len(b) = 10, wat is dan lim-len(b)?
En dan is het toch 0?

Re: Programmeren in python

Geplaatst: ma 06 jun 2011, 13:21
door EvilBro
In dat geval is het -5. Maar is het dan zo dat je de 5de laatste term in a dan pakt als nieuwe laatste term?
Geen idee. Mijn punt is dat het stukje code niet lijkt te doen wat het zou moeten doen. Misschien vergis ik me daarin.
En dan is het toch 0?
Maar dat lost je probleem toch niet op als len(b) > len(a). Het moet voor beide situaties werken.Waarom staat er niet gewoon iets als:

Code: Selecteer alles

 

sim = sim[0:lim]

Re: Programmeren in python

Geplaatst: ma 06 jun 2011, 13:28
door Strobo
Dat vroeg ik mij ook af.. Zou logischer zijn denk ik?

Maar er zal wel een reden zijn?

Re: Programmeren in python

Geplaatst: ma 06 jun 2011, 13:38
door EvilBro
Als de lengte van sim de kleinste van de twee is dan wordt sim gelijk aan sim[:0] en dat is een lege lijst. Dat lijkt mij niet goed.

Re: Programmeren in python

Geplaatst: ma 06 jun 2011, 13:43
door Strobo
Dat is ook wat ik dacht.. Vreemd.

Re: Programmeren in python

Geplaatst: ma 06 jun 2011, 13:45
door EvilBro
Code aanpassen, runnen en kijken wat er gebeurt.

Re: Programmeren in python

Geplaatst: ma 06 jun 2011, 14:01
door Kravitz
Verplaatst naar programmeren.