पायथनमध्ये स्ट्रिंग्स (अॅरे) आणि संख्यांच्या याद्या एकमेकांमध्ये रूपांतरित करणे

व्यवसाय

खालील सामग्री, नमुना कोडसह, पायथनमध्ये स्ट्रिंग्स (स्ट्रिंग) च्या सूची (अॅरे) आणि संख्यांच्या याद्या (इंट, फ्लोट) एकमेकांमध्ये कसे रूपांतरित करायचे ते स्पष्ट करतात.

  • संख्यांची सूची स्ट्रिंगच्या सूचीमध्ये रूपांतरित करा
    • संख्या दशांश स्ट्रिंगमध्ये रूपांतरित करा
    • अंकीय मूल्यांना बायनरी, ऑक्टल आणि हेक्साडेसिमल स्ट्रिंगमध्ये रूपांतरित करते
    • घातांकीय नोटेशनमधील अंकीय मूल्य स्ट्रिंगमध्ये रूपांतरित करते
  • स्ट्रिंगची सूची संख्यांच्या सूचीमध्ये रूपांतरित करा
    • दशांश स्ट्रिंग अंकीय मध्ये रूपांतरित करा
    • बायनरी, ऑक्टल आणि हेक्साडेसिमल स्ट्रिंगचे संख्यांमध्ये रूपांतर करते
    • घातांकीय नोटेशनमधील स्ट्रिंग्सना संख्यात्मक मूल्यांमध्ये रूपांतरित करते
    • संख्यांमध्ये रूपांतरित केल्या जाऊ शकतील अशा फक्त स्ट्रिंग्समध्ये रूपांतरित करा

सूचीमधून नवीन सूची तयार करताना, लूपपेक्षा यादीचे आकलन लिहिणे सोपे असते. या लेखातील नमुना कोड देखील सूची आकलन वापरतो. सूची आकलनाच्या तपशीलांसाठी, पुढील लेख पहा.

लक्षात ठेवा की याद्या विविध प्रकारचे डेटा संचयित करू शकतात आणि अॅरेपेक्षा काटेकोरपणे भिन्न आहेत. खालील प्रकरणांमध्ये अॅरे (मानक लायब्ररी) किंवा NumPy वापरा.

  • मला अशा प्रक्रिया हाताळायच्या आहेत ज्यांना मेमरी आकार आणि मेमरी पत्ते आवश्यक आहेत.
  • मोठ्या डेटा संचांच्या संख्यात्मक प्रक्रियेसाठी अॅरे हाताळायचे आहेत, इ.

संख्यांची सूची स्ट्रिंगच्या सूचीमध्ये रूपांतरित करा

संख्या दशांश स्ट्रिंगमध्ये रूपांतरित करा

अंकीय वरून स्ट्रिंगमध्ये रूपांतरित करण्यासाठी str() वापरा.

पायथनमध्ये, संख्या घातांक, हेक्साडेसिमल आणि बायनरी (हेक्साडेसिमल आणि बायनरी नोटेशन) सह विविध स्वरूपांमध्ये व्यक्त केली जाऊ शकते. 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() बद्दल अधिक माहितीसाठी, खालील लेख पहा.

मँटिसा भागाच्या अंकांची संख्या निर्दिष्ट केली जाऊ शकते. जर अप्परकेस 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() किंवा फ्लोट() वापरा.

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
    • हेक्साडेसिमल
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]

घातांकीय नोटेशनमधील स्ट्रिंग्सना संख्यात्मक मूल्यांमध्ये रूपांतरित करते

एक्सपोनेन्शिअल नोटेशनमधील स्ट्रिंग्स विशेष स्पेसिफिकेशनच्या गरजेशिवाय थेट फ्लोट () सह रूपांतरित केले जाऊ शकतात.

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]