Келесі мазмұн үлгі кодымен бірге жолдардың тізімдерін (массивтерін) (str) және сандар тізімдерін (int, float) Python тілінде бір-біріне түрлендіру жолын түсіндіреді.
- Сандар тізімін жолдар тізіміне түрлендіру
- Санды ондық бөлшекке түрлендіру
- Сандық мәндерді екілік, сегіздік және он алтылық жолдарға түрлендіреді
- Сандық мәнді экспоненциалды белгілеудегі жолға түрлендіреді
- Жолдар тізімін сандар тізіміне түрлендіру
- Ондық жолды санға түрлендіру
- Екілік, сегіздік және он алтылық жолдарды сандарға түрлендіреді
- Көрсеткіштік белгілердегі жолдарды сандық мәндерге түрлендіреді
- Тек сандарға түрлендіруге болатын жолдарды түрлендіру
Тізімнен жаңа тізім жасаған кезде, тізімді түсіну циклдерге қарағанда оңай жазылады. Осы мақаладағы үлгі коды тізімді түсінуді де пайдаланады. Тізімді түсіну туралы мәліметтер алу үшін келесі мақаланы қараңыз.
Тізімдер деректердің әртүрлі түрлерін сақтай алатынын және массивтерден қатаң айырмашылығы бар екенін ескеріңіз. Келесі жағдайларда массив (стандартты кітапхана) немесе NumPy пайдаланыңыз.
- Мен жад өлшемі мен жад мекенжайларын талап ететін процестерді өңдегім келеді.
- Үлкен деректер жиынын сандық өңдеуге арналған массивтерді өңдеуді қалайсыз және т.б.
Сандар тізімін жолдар тізіміне түрлендіру
Санды ондық бөлшекке түрлендіру
Саннан жолға түрлендіру үшін str() пайдаланыңыз.
Python тілінде сандар экспоненциалды, он алтылық және екілік (он алтылық және екілік белгілер) сияқты әртүрлі пішімдерде көрсетілуі мүмкін. str() түрлендіру нәтижесінде қалыпты ондық белгідегі жол пайда болады.
Цифрлар санына байланысты экспоненциалды белгілеу автоматты түрде қолданылуы мүмкін.
l_n = [-0.5, 0, 1.0, 100, 1.2e-2, 0xff, 0b11]
l_n_str = [str(n) for n in l_n]
print(l_n_str)
# ['-0.5', '0', '1.0', '100', '0.012', '255', '3']
Сандық мәндерді екілік, сегіздік және он алтылық жолдарға түрлендіреді
Екілік, сегіздік немесе он алтылық (екілік, сегіздік немесе он алтылық белгі) жолдарға түрлендіру үшін келесі әдістер қолжетімді.
bin()
oct()
hex()
format()
str.format()
Format() функциясының көмегімен нөлдерді толтырып, сандарды реттеуге болады.
l_i = [0, 64, 128, 192, 256]
l_i_hex1 = [hex(i) for i in l_i]
print(l_i_hex1)
# ['0x0', '0x40', '0x80', '0xc0', '0x100']
l_i_hex2 = [format(i, '04x') for i in l_i]
print(l_i_hex2)
# ['0000', '0040', '0080', '00c0', '0100']
l_i_hex3 = [format(i, '#06x') for i in l_i]
print(l_i_hex3)
# ['0x0000', '0x0040', '0x0080', '0x00c0', '0x0100']
Сандық мәнді экспоненциалды белгілеудегі жолға түрлендіреді
Жоғарыда айтылғандай, кейбір жағдайлар цифрлар санына байланысты автоматты түрде экспоненциалды белгілеуде болуы мүмкін. Дегенмен, әрқашан экспоненциалды белгілеудегі жолға түрлендіру үшін төмендегілердің бірін пайдаланыңыз
format()
str.format()
format() функциясы және str.format() жолы әдісі туралы қосымша ақпарат алу үшін келесі мақаланы қараңыз.
- БАЙЛАНЫСТЫ:Python-да форматты түрлендіру, пішім (0-толтыру, экспоненциалды белгілеу, он алтылық және т.б.)
Мантисса бөлігінің цифрларының санын көрсетуге болады. Аргумент ретінде бас E әрпі пайдаланылса, шығыс жолы да бас әріп E болады.
l_f = [0.0001, 123.456, 123400000]
l_f_e1 = [format(f, 'e') for f in l_f]
print(l_f_e1)
# ['1.000000e-04', '1.234560e+02', '1.234000e+08']
l_f_e2 = [format(f, '.3E') for f in l_f]
print(l_f_e2)
# ['1.000E-04', '1.235E+02', '1.234E+08']
Жолдар тізімін сандар тізіміне түрлендіру
Ондық жолды санға түрлендіру
Жолдан санға түрлендіру үшін int() немесе float() пайдаланыңыз.
int() — бүтін санға түрлендіру, ал float() — өзгермелі нүктелі санға түрлендіру.
float() жүйесінде бүтін бөлігі түсірілген жолдар бүтін бөлік үшін 0-мен толықтырылады.
l_si = ['-10', '0', '100']
l_si_i = [int(s) for s in l_si]
print(l_si_i)
# [-10, 0, 100]
l_sf = ['.123', '1.23', '123']
l_sf_f = [float(s) for s in l_sf]
print(l_sf_f)
# [0.123, 1.23, 123.0]
Екілік, сегіздік және он алтылық жолдарды сандарға түрлендіреді
int() екінші аргументі радикс болуы мүмкін: екілік үшін 2, сегіздік үшін 8 және он алтылық үшін 16, жолды санға түрлендіру.
Егер 0 көрсетілсе, келесі префиксті жолдардың әрқайсысы бүтін санға түрлендіріледі.
0b
- екілік сандар
0o
- сегіздік
0x
- он алтылық
- БАЙЛАНЫСТЫ:Python тілінде екілік, сегіздік және он алтылық сандар мен жолдарды бір-біріне түрлендіру
l_sb = ['0011', '0101', '1111']
l_sb_i = [int(s, 2) for s in l_sb]
print(l_sb_i)
# [3, 5, 15]
l_sbox = ['100', '0b100', '0o77', '0xff']
l_sbox_i = [int(s, 0) for s in l_sbox]
print(l_sbox_i)
# [100, 4, 63, 255]
Көрсеткіштік белгілердегі жолдарды сандық мәндерге түрлендіреді
Экспоненциалды белгілеудегі жолдарды арнайы спецификацияны қажет етпестен тікелей float() көмегімен түрлендіруге болады.
l_se = ['1.23e3', '0.123e-1', '123']
l_se_f = [float(s) for s in l_se]
print(l_se_f)
# [1230.0, 0.0123, 123.0]
Тек сандарға түрлендіруге болатын жолдарды түрлендіру
Санға түрлендіру мүмкін емес жолды int() немесе float() күйіне беру ValueError қатесіне әкеледі.
Қатеде жалған мәнін қайтаратын жаңа функция анықталса, түрлендіруге болатын элементтер ғана сандарға түрленіп, тізім элементтеріне айнала алады.
def is_int(s):
try:
int(s)
except ValueError:
return False
else:
return True
def is_float(s):
try:
float(s)
except ValueError:
return False
else:
return True
l_multi = ['-100', '100', '1.23', '1.23e2', 'one']
l_multi_i = [int(s) for s in l_multi if is_int(s)]
print(l_multi_i)
# [-100, 100]
l_multi_f = [float(s) for s in l_multi if is_float(s)]
print(l_multi_f)
# [-100.0, 100.0, 1.23, 123.0]