تحويل قوائم السلاسل (المصفوفات) وقوائم الأرقام إلى بعضها البعض في بايثون

اعمال

توضح المحتويات التالية ، جنبًا إلى جنب مع نموذج التعليمات البرمجية ، كيفية تحويل قوائم (مصفوفات) السلاسل (str) وقوائم الأرقام (int ، float) إلى بعضها البعض في Python.

  • تحويل قائمة الأرقام إلى قائمة السلاسل
    • تحويل رقم إلى سلسلة عشرية
    • يحول القيم الرقمية إلى سلاسل ثنائية وثنائية وسداسية عشرية
    • تحويل قيمة عددية إلى سلسلة بالتدوين الأسي
  • تحويل قائمة سلاسل إلى قائمة أرقام
    • تحويل سلسلة عشرية إلى رقمية
    • يحول السلاسل الثنائية والثنائية والسداسية العشرية إلى أرقام
    • يحول السلاسل في التدوين الأسي إلى قيم عددية
    • قم بتحويل السلاسل التي يمكن تحويلها إلى أرقام فقط

عند إنشاء قائمة جديدة من قائمة ، فإن كتابة قائمة الإدراك أسهل من كتابة حلقات for. يستخدم نموذج التعليمات البرمجية في هذه المقالة أيضًا قوائم فهم. للحصول على تفاصيل شاملة القائمة ، راجع المقالة التالية.

لاحظ أن القوائم يمكن أن تخزن أنواعًا مختلفة من البيانات وتختلف تمامًا عن المصفوفات. استخدم مصفوفة (مكتبة قياسية) أو 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 () ، يتم استكمال السلاسل التي تم حذف الجزء الصحيح منها بصفر للجزء الصحيح.

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 () إلى حدوث خطأ في القيمة.

إذا تم تحديد دالة جديدة تقوم بإرجاع خطأ عند حدوث خطأ ، فيمكن فقط تحويل العناصر التي يمكن تحويلها إلى أرقام وتصبح عناصر من القائمة.

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]