Kuinka lisätä elementtejä luetteloon Pythonissa

Mikä se on

Python-listat ovat dynaamisia taulukoita. Voit lisätä kohteita paikoilleen esimerkiksiappend(),insert(), jaextend()tai luo uusi luettelo yhdistämällä ja purkamalla. Listan ydintoiminnot on esitetty luettelomenetelmien dokumentaatiossa.

Miksi sillä on väliä

Oikean tavan valinta elementtien lisäämiseen vaikuttaa:

  • Luettavuus: yksi kohde vs. monta, lopussa vs paikka.
  • Suorituskyky: append on nopea; työntäminen lähelle etuosaa siirtää kohteita.
  • Oikeudenmukaisuus: luettelon muuttaminen paikalleen vs. uuden luettelon palauttaminen välttää ei-toivotut sivuvaikutukset.

Kuinka käyttää sitä

1) Lisää yksi kohde loppuun(paikallaan)

nums = [1, 2, 3]
nums.append(4)         # [1, 2, 3, 4]
# Note: append() returns None and mutates the list.

2) Aseta tiettyyn kohtaan(paikallaan)

letters = ['a', 'c', 'd']
letters.insert(1, 'b') # ['a', 'b', 'c', 'd']  inserts at index 1

3) Lisää useita kohteita mistä tahansa iteroitavasta(paikallaan)

items = ['apple', 'banana']
items.extend(['cherry', 'date'])  # end of list
items.extend(('elderberry', 'fig'))  # tuples work too
items.extend({ 'g', 'h' })  # adds each element of the set (order arbitrary)

4) Luo uusi luettelo ketjuttamalla(ei mutaatiota)

base = [1, 2]
new_list = base + [3]       # base unchanged
# or unpacking syntax:
new_list2 = [*base, 3]
front_added = [0, *base]    # add to the front without mutating base

5) Kopioi ja sitten muokkaa(selkeä mutaatioton malli)

orig = [10, 20]
copy = orig.copy()
copy.append(30)    # orig is still [10, 20]

6) Lisää sisäkkäisen luettelon sisään

matrix = [['abc', '2'], ['cds', '333'], ['efg']]
matrix[2].append('444')  # [['abc','2'], ['cds','333'], ['efg','444']]

7) Lisää useita kohteita osiomäärityksen avulla(paikallaan)

nums = [1, 4, 5]
nums[1:1] = [2, 3]   # insert before index 1 → [1, 2, 3, 4, 5]
nums[len(nums):] = [6, 7]  # append many → [1, 2, 3, 4, 5, 6, 7]

8) Lyhennetty lyhenne(paikallaan)

Suositeltu luettava:Kirjoita luettelon ymmärtäminen Pythonissa

nums = [1, 2]
nums += [3, 4]  # like extend; mutates the existing list

Rajat ja kompromissit

  • Mutaatio vs kopio: append(),insert(),extend(), ja+=muuttaa luetteloa. Käyttää+, purkaminen ([*lst, x]), taicopy()-muokkaa sitten sivuvaikutusten välttämiseksi.
  • Suorituskyky:
    • append(): kuoletettu O(1)
    • extend(k): O(k)
    • insert(i, x): O(n) (siirtää elementtejä)
    • lst + othertai[*lst, *other]: O(n + m) luodaksesi uuden listan
  • Iteraatioturvallisuus:Älä lisää tai poista luetteloa toistettaessa sitä; luo ensin uusi luettelo tai kerää muutokset.
  • Liitä vs laajenna: append(obj)lisää objektin yhtenä elementtinä;extend(iterable)lisää jokaisen iteroitavan elementin.
  • Sanat ja setit:Sanelulla laajentaminen toistaa sen avaimet; sarjat ovat järjestämättömiä, joten tulosten järjestystä ei taata.

UKK

  • Kuinka lisään etuosaan?Käyttääinsert(0, x)muuntumaan tai[x, *lst]luodaksesi uuden luettelon.
  • Miksi tekeeappend()palauttaa Ei mitään?Se mutatoituu paikalleen; palautusarvo ilmaisee, että uutta luetteloa ei ole käytettävissä.
  • Is+=erilainen kuinextend()?Listoja varten+=käyttäytyy kuinextend()ja muuttaa luettelon.
  • Kuinka lisään useita elementtejä paikkaan?Käytä viipaleiden määritystä:lst[i:i] = iterable.
  • Voinko lisätä silmukoinnin aikana?Vältä mutatoitumista iteroinnin aikana; luo sen sijaan tulosluettelo, esim.result = [*lst, extra]silmukan jälkeen.

Related Posts