Povezovanje in združevanje nizov v Pythonu: + operatorji, funkcije za združevanje itd.

Posel

V nadaljevanju je opisano, kako v Pythonu združiti in spojiti niz nizov str.

  • Povezovanje in združevanje več nizov: +,+=operater
  • Povezovanje in združevanje števil in nizov: +,+=operater,str(),format(),f-string
  • Konkateniranje in združevanje seznamov (nizov) nizov v en sam niz:join()
  • Konkateniranje in združevanje seznamov (nizov) števil v en sam niz:join(),str()

Povezovanje in združevanje več nizov: +, +=operater

povezava: +operater

Operator ++ lahko uporabite za združevanje naslednjih nizovskih literalov in nizovskih spremenljivk

  • '…'
  • “…”
s = 'aaa' + 'bbb' + 'ccc'
print(s)
# aaabbbccc

s1 = 'aaa'
s2 = 'bbb'
s3 = 'ccc'

s = s1 + s2 + s3
print(s)
# aaabbbccc

s = s1 + s2 + s3 + 'ddd'
print(s)
# aaabbbcccddd

povezava: +=operater

Uporabite lahko tudi operator +=, kumulativni operator za pripisovanje. Spremenljivka z nizom na levi strani se združi z nizom na desni strani ter se pripiše in posodobi.

s1 += s2
print(s1)
# aaabbb

Če želite na konec spremenljivke z nizom dodati niz, preprosto obdelajte spremenljivko z nizom in kateri koli literal z nizom (ali drugo spremenljivko z nizom) z operatorjem +=.

s = 'aaa'

s += 'xxx'
print(s)
# aaaxxx

Zaporedno povezovanje literalov nizov

Če literale nizov zapišete drug ob drugem, bodo literali nizov združeni.

s = 'aaa''bbb''ccc'
print(s)
# aaabbbccc

Sprejemljiv je presledek med dvema vrsticama ali prekinitev vrstice s povratno poševnico (velja za nadaljevanje).

s = 'aaa'  'bbb'    'ccc'
print(s)
# aaabbbccc

s = 'aaa'\
    'bbb'\
    'ccc'
print(s)
# aaabbbccc

Obstaja tehnika, ki omogoča zapisovanje dolgih nizov v več vrsticah v kodi.

Ta način zapisovanja ni mogoč za nizovne spremenljivke.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Povezovanje številk in nizov\konkatenacija: +,+=operater,str(),format(),f-string

Operacija + druge vrste povzroči napako.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

# s = s1 + i
# TypeError: must be str, not int

Če želite združiti številsko vrednost (npr. celoštevilski tip int ali tip s plavajočo vejico float) z nizom, pretvorite številsko vrednost v niz s funkcijo str() in ju nato združite z operatorjem + (ali +=).

s = s1 + '_' + str(i) + '_' + s2 + '_' + str(f)
print(s)
# aaa_100_bbb_0.25

Če želite pretvoriti obliko števila, na primer izpolnjevanje ničle ali decimalnih mest, uporabite funkcijo format() ali metodo string format().

s = s1 + '_' + format(i, '05') + '_' + s2 + '_' + format(f, '.5f')
print(s)
# aaa_00100_bbb_0.25000

s = '{}_{:05}_{}_{:.5f}'.format(s1, i, s2, f)
print(s)
# aaa_00100_bbb_0.25000

Seveda je mogoče vrednost spremenljivke vgraditi tudi neposredno v niz brez oblikovanja. To je preprostejše za zapisovanje kot uporaba operatorja +.

s = '{}_{}_{}_{}'.format(s1, i, s2, f)
print(s)
# aaa_100_bbb_0.25

Podrobnosti o tem, kako določiti obliko, najdete v naslednjem članku.

Od različice Python 3.6 je uveden tudi mehanizem, imenovan f-strings (f-string), ki je še enostavnejši za pisanje kot format().

s = f'{s1}_{i:05}_{s2}_{f:.5f}'
print(s)
# aaa_00100_bbb_0.25000

s = f'{s1}_{i}_{s2}_{f}'
print(s)
# aaa_100_bbb_0.25

Povezovanje in združevanje seznamov (nizov) nizov: join()

Z metodo join() lahko združite seznam nizov v en sam niz.

V nadaljevanju je opisano, kako ga napisati.

'String to be inserted between'.join([List of strings to be concatenated])

Pokličite metodo join() z ukazom 'niz za vstavitev med' in kot argument podajte [seznam nizov za združitev].

Če je uporabljen prazen niz, bo [seznam nizov za združitev] preprosto združen, če je uporabljena vejica, bodo nizi ločeni z vejico, če pa je uporabljen znak nove vrstice, bo vsak element niza podčrtan.

l = ['aaa', 'bbb', 'ccc']

s = ''.join(l)
print(s)
# aaabbbccc

s = ','.join(l)
print(s)
# aaa,bbb,ccc

s = '-'.join(l)
print(s)
# aaa-bbb-ccc

s = '\n'.join(l)
print(s)
# aaa
# bbb
# ccc

Čeprav je tukaj podan le primer seznama, lahko kot argumente funkcije join() navedete tudi druge iterabilne predmete, kot so tuple.

V nasprotju s funkcijo join() se funkcija split() uporablja za razdelitev niza, omejenega z določenim ločilom, in ga dobi kot seznam.

Povezovanje in združevanje seznamov (nizov) števil kot nizov: join(),str()

Če je argument funkcije join() seznam, katerega elementi niso nizi, pride do napake.

l = [0, 1, 2]

# s = '-'.join(l)
# TypeError: sequence item 0: expected str instance, int found

Če želite združiti seznam številk v en sam niz, uporabite funkcijo str() za vsak element v zapisu razumevanja seznama, da številke pretvorite v niz, in jih nato združite s funkcijo join().

s = '-'.join([str(n) for n in l])
print(s)
# 0-1-2

Lahko ga zapišemo tudi kot generatorski izraz, ki je generatorska različica razumevanja seznamov. Generatorski izrazi so zaprti v oklepajih, vendar jih lahko izpustimo, če je generatorski izraz edini argument funkcije ali metode.

s = '-'.join((str(n) for n in l))
print(s)
# 0-1-2

s = '-'.join(str(n) for n in l)
print(s)
# 0-1-2

Generatorski izrazi imajo na splošno to prednost, da porabijo manj pomnilnika kot razumevanje seznamov, vendar uporaba generatorskih izrazov nima posebne prednosti, saj funkcija join() pri notranji obdelavi pretvori generatorje v sezname. Dejansko je nekoliko hitrejše, če že od začetka uporabljamo razumevanje seznamov.

Za več informacij o razumevanju seznamov in generatorskih izrazih glejte naslednji članek.