تبدیل لیست رشته ها (آرایه ها) و لیست اعداد به یکدیگر در پایتون

کسب و کار

مطالب زیر به همراه کد نمونه، نحوه تبدیل لیست (آرایه) رشته ها (str) و لیست اعداد (int، float) را به یکدیگر در پایتون توضیح می دهد.

  • لیستی از اعداد را به لیست رشته ها تبدیل کنید
    • یک عدد را به رشته اعشاری تبدیل کنید
    • مقادیر عددی را به رشته های باینری، اکتال و هگزادسیمال تبدیل می کند
    • یک مقدار عددی را به یک رشته در نماد نمایی تبدیل می کند
  • لیست رشته ها را به لیستی از اعداد تبدیل کنید
    • رشته اعشاری را به عددی تبدیل کنید
    • رشته های باینری، اکتال و هگزادسیمال را به اعداد تبدیل می کند
    • رشته ها را در نمادهای نمایی به مقادیر عددی تبدیل می کند
    • فقط رشته هایی که می توانند به اعداد تبدیل شوند را تبدیل کنید

هنگام ایجاد یک لیست جدید از یک لیست، نوشتن درک لیست ساده تر از حلقه ها است. کد نمونه در این مقاله همچنین از درک لیست استفاده می کند. برای جزئیات درک فهرست، مقاله زیر را ببینید.

توجه داشته باشید که لیست ها می توانند انواع مختلفی از داده ها را ذخیره کنند و کاملاً با آرایه ها متفاوت هستند. در موارد زیر از آرایه (کتابخانه استاندارد) یا 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() یا 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
    • هگزادسیمال
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 می شود.

اگر تابع جدیدی تعریف شده باشد که در صورت خطا، false را برمی گرداند، تنها عناصری که قابل تبدیل هستند می توانند به اعداد تبدیل شوند و به عناصر لیست تبدیل شوند.

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]
Copied title and URL