Adam Ebrahim نشر 25 مايو 2021 أرسل تقرير نشر 25 مايو 2021 لدي قائمة list تحتوي على عدد كبير من القوائم بداخلها وكل قائمة داخلية تحتوي بدورها على قوائم أخرى كالتالي على سبيل المثال: [ [ [1,2,3], 4, 5 ], [ None, [7,8,9], [‘hi’,11,True] ], [1,2,3] ] المشكلة أن هذه القوائم متداخلة بطريقة عشوائية، كيف أقوم بطباعة كل العناصر في هذه القوائم لتكون النتيجة كالتالي: 1,2,3,4,5,None,7,8,9,’hi’,11,True,1,2,3 1 اقتباس
0 Sam Ahw نشر 25 مايو 2021 أرسل تقرير نشر 25 مايو 2021 يمكنك استخدام المكتبة itertools بالشكل التالي: import itertools anylist = [[1,2,3],4,5,[7],[8,9]] merged = list(itertools.chain(*anylist)) وبشكل مشابه أيضاً استخدام itertools.chain.from_iterable: merged = list(itertools.chain.from_iterable(list2d)) وبشكل يدوي، يمكنك البحث عن مصطلع flat ضمن المصفوفات في بايثون، فيمكنك إجراء السابق بنفس الطريقة من خلال: newList = [item for childList in t for item in childList] والتي تماثل: newList = [] for childList in t: for item in childList: newList.append(item) 1 اقتباس
1 Wael Aljamal نشر 25 مايو 2021 أرسل تقرير نشر 25 مايو 2021 يمكننا المرور على القوائم بالطريقة التراجعية وهي خوارزيمة تقوم على استدعاء نفسها عدة مرات، حيث لكل عنصر سوف نختبر هل هو عنصر وحيد؟ إن كان عنصر وحيد نضيفه للقائمة النهائية (خرج الخوارزمية) وإن كان قائمة نقوم باستدعاء عودي/تراجعي لهذه القامة الفرعية: def flatten(nested_list): if len(nested_list) == 0: return nested_list if isinstance(nested_list[0], list): return flatten(nested_list[0]) + flatten(nested_list[1:]) return nested_list[:1] + flatten(nested_list[1:]) print(flatten([[1, 2, 3, 4], [5, 6, 7], [8, 9], 10])) #[1, 2, 3, 4, 5, 6, 7, 8, 9, 10] isinstance يختبر هل الوسيط الأول من النوع المساوي للوسيط الثاني وعليه نحدد هل العنصر الحالي هو قائمة أو لا. 2 اقتباس
السؤال
Adam Ebrahim
لدي قائمة list تحتوي على عدد كبير من القوائم بداخلها وكل قائمة داخلية تحتوي بدورها على قوائم أخرى كالتالي على سبيل المثال:
المشكلة أن هذه القوائم متداخلة بطريقة عشوائية، كيف أقوم بطباعة كل العناصر في هذه القوائم لتكون النتيجة كالتالي:
2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.