اذهب إلى المحتوى

السؤال

نشر

لدي القائمة التالية:

L= [0, 23, 234, 89, None, 0, 35, 9]

وعندما أنفذ عليها هذا السطر:

L = filter(None, L)

أحصل على النتيجة التالية (لاحظ إزالة الأصفار):

[23, 234, 89, 35, 9]

فهل توجد طريقة في بايثون لحذف فقط None من السلسلة النصية؟

Recommended Posts

  • 0
نشر

يوجد العديد من الطرق لفعل ذلك في لغة بايثون، فإذا كنت تستخدم الإصدار الثاني منه، يمكنك استخدام حلقة التكرار for مع الجملة الشرطية بدلا من filter كما في المثال التالي:

>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> [x for x in L if x is not None]
[0, 23, 234, 89, 0, 35, 9]

وهنالك طريقة أخرى باستخدام filter لكنني لا أنصح باستخدامها وهي كالتالي:

>>> from operator import is_not
>>> from functools import partial
>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> filter(partial(is_not, None), L)
[0, 23, 234, 89, 0, 35, 9]

أما لو كنت تستخدم الإصدار الثالث من بايثون، فيمكنك في هذه الحالة استخدام دوال list وfilter لحذف None كما في المثال التالي:

>>> L = [0, 23, 234, 89, None, 0, 35, 9]
>>> list(filter(None.__ne__, L))
[0, 23, 234, 89, 0, 35, 9]

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...