ខ្លឹមសារខាងក្រោម រួមជាមួយនឹងកូដគំរូ ពន្យល់ពីរបៀបបំប្លែងបញ្ជី (អារេ) នៃខ្សែអក្សរ (str) និងបញ្ជីលេខ (int, float) ទៅគ្នាទៅវិញទៅមកនៅក្នុង Python ។
- បំលែងបញ្ជីលេខទៅជាបញ្ជីខ្សែអក្សរ
- បំប្លែងលេខទៅជាខ្សែទសភាគ
- បំប្លែងតម្លៃលេខទៅជាជួរគោលពីរ គោលប្រាំបី និងលេខគោលដប់ប្រាំមួយ។
- បំប្លែងតម្លៃលេខទៅជាខ្សែអក្សរក្នុងសញ្ញាអិចស្ប៉ូណង់ស្យែល
- បំប្លែងបញ្ជីខ្សែទៅជាបញ្ជីលេខ
- បំប្លែងលេខទសភាគទៅជាលេខ
- បំប្លែងខ្សែអក្សរគោលពីរ គោលប្រាំបី និងគោលដប់ប្រាំមួយទៅជាលេខ
- បំប្លែងខ្សែអក្សរក្នុងសញ្ញាអិចស្ប៉ូណង់ស្យែលទៅជាតម្លៃលេខ
- បំប្លែងតែខ្សែអក្សរដែលអាចបំប្លែងទៅជាលេខបាន។
នៅពេលបង្កើតបញ្ជីថ្មីពីបញ្ជីមួយ ការយល់ក្នុងបញ្ជីគឺងាយស្រួលសរសេរជាងសម្រាប់រង្វិលជុំ។ កូដគំរូនៅក្នុងអត្ថបទនេះក៏ប្រើការយល់បញ្ជីផងដែរ។ សម្រាប់ព័ត៌មានលម្អិតនៃការយល់ក្នុងបញ្ជី សូមមើលអត្ថបទខាងក្រោម។
- ពាក់ព័ន្ធ៖របៀបប្រើការយល់បញ្ជី 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() សូមមើលអត្ថបទខាងក្រោម។
ចំនួនខ្ទង់នៃផ្នែក mantissa អាចត្រូវបានបញ្ជាក់។ ប្រសិនបើអក្សរធំ 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() អាចជា radix: 2 សម្រាប់ប្រព័ន្ធគោលពីរ, 8 សម្រាប់ octal, និង 16 សម្រាប់ hexadecimal បំលែងខ្សែអក្សរទៅជាលេខមួយ។
ប្រសិនបើ 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() នឹងបណ្តាលឱ្យមានកំហុសតម្លៃ។
ប្រសិនបើមុខងារថ្មីត្រូវបានកំណត់ដែលត្រឡប់មិនពិតតាមកំហុស មានតែធាតុដែលអាចបំប្លែងបានប៉ុណ្ណោះដែលអាចបំប្លែងទៅជាលេខ ហើយក្លាយជាធាតុនៃបញ្ជី។
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]