|
84 | 84 | "metadata": {}, |
85 | 85 | "outputs": [], |
86 | 86 | "source": [ |
87 | | - "# x *= 2" |
| 87 | + "# Skriv løsning her\n", |
| 88 | + "# x *= 2\n" |
88 | 89 | ] |
89 | 90 | }, |
90 | 91 | { |
|
250 | 251 | "id": "21", |
251 | 252 | "metadata": {}, |
252 | 253 | "outputs": [], |
253 | | - "source": [] |
| 254 | + "source": [ |
| 255 | + "# Skriv løsning her" |
| 256 | + ] |
254 | 257 | }, |
255 | 258 | { |
256 | 259 | "cell_type": "markdown", |
|
291 | 294 | ] |
292 | 295 | }, |
293 | 296 | { |
294 | | - "cell_type": "markdown", |
| 297 | + "cell_type": "code", |
| 298 | + "execution_count": null, |
295 | 299 | "id": "24", |
296 | 300 | "metadata": {}, |
| 301 | + "outputs": [], |
| 302 | + "source": [ |
| 303 | + "# Skriv løsning her" |
| 304 | + ] |
| 305 | + }, |
| 306 | + { |
| 307 | + "cell_type": "markdown", |
| 308 | + "id": "25", |
| 309 | + "metadata": {}, |
297 | 310 | "source": [ |
298 | 311 | "Dobbelklikk for løsning\n", |
299 | 312 | "<!--\n", |
|
308 | 321 | }, |
309 | 322 | { |
310 | 323 | "cell_type": "markdown", |
311 | | - "id": "25", |
| 324 | + "id": "26", |
312 | 325 | "metadata": {}, |
313 | 326 | "source": [ |
314 | 327 | "## Lister\n", |
|
319 | 332 | { |
320 | 333 | "cell_type": "code", |
321 | 334 | "execution_count": null, |
322 | | - "id": "26", |
| 335 | + "id": "27", |
323 | 336 | "metadata": {}, |
324 | 337 | "outputs": [], |
325 | 338 | "source": [ |
|
329 | 342 | }, |
330 | 343 | { |
331 | 344 | "cell_type": "markdown", |
332 | | - "id": "27", |
| 345 | + "id": "28", |
333 | 346 | "metadata": {}, |
334 | 347 | "source": [ |
335 | 348 | "Vi kan også legge til elementer i en liste ved å bruke metoden `append()`. For eksempel, for å legge til tallet 4 i listen `x`, kan vi skrive:" |
|
338 | 351 | { |
339 | 352 | "cell_type": "code", |
340 | 353 | "execution_count": null, |
341 | | - "id": "28", |
| 354 | + "id": "29", |
342 | 355 | "metadata": {}, |
343 | 356 | "outputs": [], |
344 | 357 | "source": [ |
|
348 | 361 | }, |
349 | 362 | { |
350 | 363 | "cell_type": "markdown", |
351 | | - "id": "29", |
| 364 | + "id": "30", |
352 | 365 | "metadata": {}, |
353 | 366 | "source": [ |
354 | 367 | "Vi kan bruke lister til å lagre resultatene underveis i en løkke. For eksempel, for å lagre de 5 første toerpotensnene (2^0, 2^1, 2^2, 2^3, 2^4), kan vi gjøre følgende:" |
|
357 | 370 | { |
358 | 371 | "cell_type": "code", |
359 | 372 | "execution_count": null, |
360 | | - "id": "30", |
| 373 | + "id": "31", |
361 | 374 | "metadata": {}, |
362 | 375 | "outputs": [], |
363 | 376 | "source": [ |
|
369 | 382 | }, |
370 | 383 | { |
371 | 384 | "cell_type": "markdown", |
372 | | - "id": "31", |
| 385 | + "id": "32", |
373 | 386 | "metadata": {}, |
374 | 387 | "source": [ |
375 | 388 | "Vi kan også akksessere elementer i en liste ved å bruke indeksering. Indekseringen starter på 0, så det første elementet i listen har indeks 0, det andre elementet har indeks 1, og så videre. For eksempel, for å få det tredje elementet i listen `x`, kan vi skrive:" |
|
378 | 391 | { |
379 | 392 | "cell_type": "code", |
380 | 393 | "execution_count": null, |
381 | | - "id": "32", |
| 394 | + "id": "33", |
382 | 395 | "metadata": {}, |
383 | 396 | "outputs": [], |
384 | 397 | "source": [ |
|
387 | 400 | }, |
388 | 401 | { |
389 | 402 | "cell_type": "markdown", |
390 | | - "id": "33", |
| 403 | + "id": "34", |
391 | 404 | "metadata": {}, |
392 | 405 | "source": [ |
393 | 406 | "### Oppgave - Lag en liste med de første 10 Fibonacci-tallene\n", |
|
397 | 410 | }, |
398 | 411 | { |
399 | 412 | "cell_type": "markdown", |
400 | | - "id": "34", |
| 413 | + "id": "35", |
401 | 414 | "metadata": { |
402 | 415 | "tags": [ |
403 | 416 | "hide-input" |
|
424 | 437 | { |
425 | 438 | "cell_type": "code", |
426 | 439 | "execution_count": null, |
427 | | - "id": "35", |
| 440 | + "id": "36", |
428 | 441 | "metadata": {}, |
429 | 442 | "outputs": [], |
430 | | - "source": [] |
| 443 | + "source": [ |
| 444 | + "# Skriv løsning her" |
| 445 | + ] |
431 | 446 | }, |
432 | 447 | { |
433 | 448 | "cell_type": "markdown", |
434 | | - "id": "36", |
| 449 | + "id": "37", |
435 | 450 | "metadata": { |
436 | 451 | "tags": [ |
437 | 452 | "hide-input", |
|
450 | 465 | }, |
451 | 466 | { |
452 | 467 | "cell_type": "markdown", |
453 | | - "id": "37", |
| 468 | + "id": "38", |
454 | 469 | "metadata": {}, |
455 | 470 | "source": [ |
456 | 471 | "### List comprehensions\n", |
|
461 | 476 | { |
462 | 477 | "cell_type": "code", |
463 | 478 | "execution_count": null, |
464 | | - "id": "38", |
| 479 | + "id": "39", |
465 | 480 | "metadata": {}, |
466 | 481 | "outputs": [], |
467 | 482 | "source": [ |
|
471 | 486 | }, |
472 | 487 | { |
473 | 488 | "cell_type": "markdown", |
474 | | - "id": "39", |
| 489 | + "id": "40", |
475 | 490 | "metadata": {}, |
476 | 491 | "source": [ |
477 | 492 | "Dette er ofte mer effektivt og lesbart enn å bruke en `for`-løkke for å bygge opp listen. I en jupyter notebook kan vi bruke `%%timeit` for å måle hvor lang tid det tar å kjøre en celle. La oss sammenligne ytelsen til en liste comprehension med en `for`-løkke for å lage en liste med kvadrater av tallene fra 1 til 10 millioner:" |
|
480 | 495 | { |
481 | 496 | "cell_type": "code", |
482 | 497 | "execution_count": null, |
483 | | - "id": "40", |
| 498 | + "id": "41", |
484 | 499 | "metadata": {}, |
485 | 500 | "outputs": [], |
486 | 501 | "source": [ |
|
491 | 506 | { |
492 | 507 | "cell_type": "code", |
493 | 508 | "execution_count": null, |
494 | | - "id": "41", |
| 509 | + "id": "42", |
495 | 510 | "metadata": {}, |
496 | 511 | "outputs": [], |
497 | 512 | "source": [ |
|
503 | 518 | }, |
504 | 519 | { |
505 | 520 | "cell_type": "markdown", |
506 | | - "id": "42", |
| 521 | + "id": "43", |
507 | 522 | "metadata": {}, |
508 | 523 | "source": [ |
509 | 524 | "Det var ikke veldig stor forskjell i dette tilfellet, men i andre situasjoner kan det være betydelig forskjell i ytelse, spesielt for større datasett. Vi kan også argumentere med at list comprehensions ofte er mer lesbare og uttrykksfulle enn tradisjonelle løkker.\n" |
510 | 525 | ] |
511 | 526 | }, |
512 | 527 | { |
513 | 528 | "cell_type": "markdown", |
514 | | - "id": "43", |
| 529 | + "id": "44", |
515 | 530 | "metadata": {}, |
516 | 531 | "source": [ |
517 | 532 | "## Importere biblioteker\n", |
|
522 | 537 | { |
523 | 538 | "cell_type": "code", |
524 | 539 | "execution_count": null, |
525 | | - "id": "44", |
| 540 | + "id": "45", |
526 | 541 | "metadata": {}, |
527 | 542 | "outputs": [], |
528 | 543 | "source": [ |
|
531 | 546 | }, |
532 | 547 | { |
533 | 548 | "cell_type": "markdown", |
534 | | - "id": "45", |
| 549 | + "id": "46", |
535 | 550 | "metadata": {}, |
536 | 551 | "source": [ |
537 | 552 | "For å se hvilke funksjoner og konstanter som er tilgjengelige i `math`-biblioteket, kan vi i jupyter notebook starte med å skrive navnet på biblioteket etterfulgt av en punktum (`.`) og deretter trykke `Tab`-tasten. Dette vil vise en liste over tilgjengelige funksjoner og konstanter i biblioteket." |
|
540 | 555 | { |
541 | 556 | "cell_type": "code", |
542 | 557 | "execution_count": null, |
543 | | - "id": "46", |
| 558 | + "id": "47", |
544 | 559 | "metadata": {}, |
545 | 560 | "outputs": [], |
546 | 561 | "source": [ |
|
549 | 564 | }, |
550 | 565 | { |
551 | 566 | "cell_type": "markdown", |
552 | | - "id": "47", |
| 567 | + "id": "48", |
553 | 568 | "metadata": {}, |
554 | 569 | "source": [ |
555 | 570 | "En annen veldig nyttig funksjonalitet i jupyter notebook er at vi kan bruke `?` for å få hjelp om en funksjon eller et objekt. For eksempel, for å få hjelp om `math.sqrt`-funksjonen, kan vi skrive:\n", |
|
563 | 578 | { |
564 | 579 | "cell_type": "code", |
565 | 580 | "execution_count": null, |
566 | | - "id": "48", |
| 581 | + "id": "49", |
567 | 582 | "metadata": {}, |
568 | 583 | "outputs": [], |
569 | 584 | "source": [ |
|
572 | 587 | }, |
573 | 588 | { |
574 | 589 | "cell_type": "markdown", |
575 | | - "id": "49", |
| 590 | + "id": "50", |
576 | 591 | "metadata": {}, |
577 | 592 | "source": [ |
578 | 593 | "### Bonus\n", |
|
583 | 598 | { |
584 | 599 | "cell_type": "code", |
585 | 600 | "execution_count": null, |
586 | | - "id": "50", |
| 601 | + "id": "51", |
587 | 602 | "metadata": {}, |
588 | 603 | "outputs": [], |
589 | 604 | "source": [] |
590 | 605 | }, |
591 | 606 | { |
592 | 607 | "cell_type": "markdown", |
593 | | - "id": "51", |
| 608 | + "id": "52", |
594 | 609 | "metadata": {}, |
595 | 610 | "source": [ |
596 | 611 | "## Lister for numeriske beregninger\n", |
|
601 | 616 | { |
602 | 617 | "cell_type": "code", |
603 | 618 | "execution_count": null, |
604 | | - "id": "52", |
| 619 | + "id": "53", |
605 | 620 | "metadata": {}, |
606 | 621 | "outputs": [], |
607 | 622 | "source": [ |
|
616 | 631 | }, |
617 | 632 | { |
618 | 633 | "cell_type": "markdown", |
619 | | - "id": "53", |
| 634 | + "id": "54", |
620 | 635 | "metadata": {}, |
621 | 636 | "source": [ |
622 | 637 | "Vi kan til og med lage lister som inneholder andre lister" |
|
625 | 640 | { |
626 | 641 | "cell_type": "code", |
627 | 642 | "execution_count": null, |
628 | | - "id": "54", |
| 643 | + "id": "55", |
629 | 644 | "metadata": {}, |
630 | 645 | "outputs": [], |
631 | 646 | "source": [ |
|
638 | 653 | }, |
639 | 654 | { |
640 | 655 | "cell_type": "markdown", |
641 | | - "id": "55", |
| 656 | + "id": "56", |
642 | 657 | "metadata": {}, |
643 | 658 | "source": [ |
644 | 659 | "Når vi jobber med numeriske beregninger, kan det være mer effektivt å bruke numpy-arrays i stedet for lister. Numpy er et bibliotek for numeriske beregninger i Python som gir oss muligheten til å jobbe med store datasett på en effektiv måte. Numpy-arrays er optimalisert for numeriske operasjoner og kan utføre operasjoner på hele arrays samtidig, noe som gjør dem mye raskere enn lister for store datasett.\n", |
|
654 | 669 | { |
655 | 670 | "cell_type": "code", |
656 | 671 | "execution_count": null, |
657 | | - "id": "56", |
| 672 | + "id": "57", |
658 | 673 | "metadata": {}, |
659 | 674 | "outputs": [], |
660 | 675 | "source": [ |
|
663 | 678 | }, |
664 | 679 | { |
665 | 680 | "cell_type": "markdown", |
666 | | - "id": "57", |
| 681 | + "id": "58", |
667 | 682 | "metadata": {}, |
668 | 683 | "source": [ |
669 | 684 | "Fortsett til [02_numpy_matplotlib.ipynb](./02_numpy_matplotlib.ipynb) for å lære mer om numpy og hvordan du kan bruke det til numeriske beregninger i Python." |
670 | 685 | ] |
671 | 686 | }, |
672 | 687 | { |
673 | 688 | "cell_type": "markdown", |
674 | | - "id": "58", |
| 689 | + "id": "59", |
675 | 690 | "metadata": {}, |
676 | 691 | "source": [] |
677 | 692 | } |
|
0 commit comments