Python-да жолдарды біріктіру және біріктіру: + операторлар, біріктіру функциялары және т.б.

Іскерлік

Төменде Python жүйесінде str жолын біріктіру және біріктіру жолы сипатталған.

  • Бірнеше жолды біріктіру және біріктіру:+,+=оператор
  • Сандар мен жолдарды біріктіру және біріктіру:+,+=оператор,str(),format(),f-жолы
  • Жолдардың тізімдерін (массивтерін) бір жолға біріктіру және біріктіру:join()
  • Сандардың тізімдерін (массивтерін) бір жолға біріктіру және біріктіру:join(),str()

Бірнеше жолды біріктіру және біріктіру:+,+=оператор

байланыс:+оператор

++ операторын келесі жол литералдары мен жол айнымалыларын біріктіру үшін пайдалануға болады

  • …’
  • «…»
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

байланыс:+=оператор

+= операторын, жинақтаушы тағайындау операторын да пайдалануға болады. Сол жақтағы жол айнымалысы оң жақтағы жолмен біріктіріліп, тағайындалады және жаңартылады.

s1 += s2
print(s1)
# aaabbb

Жолды айнымалы жолдың соңына қосқыңыз келсе, жай ғана жолдың айнымалы мәнін және кез келген жолдың литералын (немесе басқа жол айнымалысын) += операторымен өңдеңіз.

s = 'aaa'

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

Жолдық литералдардың дәйекті жалғануы

Егер сіз жай ғана жол литералдарын қатар жазсаңыз, жол литералдары біріктіріледі.

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

Екі жолдың арасында бос орын немесе кері қиғаш сызық үзілімі (жалғасы ретінде қарастырылады) қолайлы.

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

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

Кодтағы бірнеше жолға ұзын жолдарды жазу үшін оны пайдалану әдісі бар.

Бұл жазу әдісі жол айнымалылары үшін мүмкін емес.

# s = s1 s2 s3
# SyntaxError: invalid syntax

Сандық және жолды жалғау/жалғастыру:+,+=оператор,str(),format(),f-жолы

Басқа түрдегі A + әрекеті қатеге әкеледі.

s1 = 'aaa'
s2 = 'bbb'

i = 100
f = 0.25

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

Егер сандық мәнді (мысалы, бүтін түрдегі int немесе өзгермелі нүкте түріндегі float) жолмен байланыстырғыңыз келсе, сандық мәнді str() арқылы жол түріне түрлендіріңіз, содан кейін оларды + операторымен (немесе += операторымен) байланыстырыңыз. ).

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

Нөлдік толтыру немесе ондық орындар сияқты санның пішімін түрлендіргіңіз келсе, 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

Әрине, пішімдеусіз айнымалының мәнін тікелей жолға ендіруге болады. Мұны жазу + операторын пайдаланудан оңайырақ.

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

Пішімді көрсету жолы туралы мәліметтер алу үшін келесі мақаланы қараңыз.

Python 3.6 нұсқасынан бастап f-strings (f-string) деп аталатын механизм де енгізілді, оны жазу форматқа () қарағанда оңайырақ.

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

Жолдардың тізімдерін (массивтерін) біріктіру және біріктіру:join()

Жолдар тізімін бір жолға біріктіру үшін join() жол әдісін пайдалануға болады.

Төменде оны қалай жазу керек.

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

арасына кірістіру жолы’ бар join() әдісіне қоңырау шалыңыз және аргумент ретінде [біріктіру үшін жолдар тізімі] жіберіңіз.

Егер бос жол пайдаланылса, [біріктірілетін жолдар тізімі] жай біріктіріледі, үтір пайдаланылса, жолдар үтірмен бөлінеді, ал жаңа жол таңбасы пайдаланылса, әрбір жол элементі жаңадан жолға қойылады.

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

Мұнда тізімнің мысалы ғана берілгенімен, кортеждер сияқты басқа қайталанатын нысандарды қосылу() үшін дәлел ретінде көрсетуге болады.

Біріктіруден () айырмашылығы, split() белгілі бір бөлгішпен бөлінген жолды бөлу және оны тізім ретінде алу үшін пайдаланылады.

Сандардың тізімдерін (массивтерін) жолдар ретінде біріктіру және біріктіру:join(),str()

Қосылу аргументі() элементтері жолдар емес тізім болса, қате орын алады.

l = [0, 1, 2]

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

Сандар тізімін бір жолға біріктіру үшін сандарды жолға түрлендіру үшін тізімді түсіну белгісіндегі әрбір элементке str() функциясын қолданыңыз, содан кейін оларды join() арқылы қосыңыз.

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

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

Генератор өрнектері әдетте тізімді түсінуге қарағанда жадты азырақ пайдаланудың артықшылығына ие, бірақ генератор өрнектерін пайдаланудың ерекше артықшылығы жоқ, өйткені join() ішкі өңдеуінде генераторларды тізімдерге түрлендіреді. Шындығында, тізімді түсінуді басынан бастап пайдалану сәл жылдамырақ.

Тізімді түсіну және генератор өрнектері туралы қосымша ақпаратты келесі мақаланы қараңыз.