ahmed1990 نشر 18 أكتوبر 2015 أرسل تقرير نشر 18 أكتوبر 2015 أريد الحصول على قائمة بها العناصر المتكررة بين قائمتين في البايثون (أي العناصر الموجودة في القائمتين معا)، قمت بكتابة هذه الشيفرة لفعل ذلك:b1 = [1,2,3,4,5,9,11,15] b2 = [4,5,6,7,8] b3 = [val for val in b1 if val in b2] لكنها لم تعمل على القوائم المتداخلة كما في المثال التالي:c1 = [1, 6, 7, 10, 13, 28, 32, 41, 58, 63] c2 = [[13, 17, 18, 21, 32], [7, 11, 13, 14, 28], [1, 5, 6, 8, 15, 16]] اقتباس
0 هشام رزق الله نشر 18 أكتوبر 2015 أرسل تقرير نشر 18 أكتوبر 2015 هنالك عدة طرق لحل هذه المشكلة، فيمكنك مثلا ببساطة القيام بتسطيح (flatten) القائمة المتداخلة أو يمكنك القيام بترشيح (فلترة) عناصر الموجودة في القائمتين كما في المثال التالي:c3 = [filter(lambda x: x in c1, sublist) for sublist in c2] يقوم filter بفحص جميع عناصر القائمة الثانية ويتأكد من أنها غير موجود في القائمة الأول.كما يمكنك أيضا استخدام intersection و set للحصول على العناصر المتكررة كما في المثال التالي:>>> b1 = [1,2,3,4,5,9,11,15] >>> b2 = [4,5,6,7,8] >>> set(b1).intersection(b2) set([4, 5]) ويمكنك أيضا عمل تغيير بسيط للسطر الأخير للمثال الذي وضعته وستحصل على ما تريد كما في المثال التالي:[[n for n in lst if n in c1set] for lst in c2] اقتباس
السؤال
ahmed1990
أريد الحصول على قائمة بها العناصر المتكررة بين قائمتين في البايثون (أي العناصر الموجودة في القائمتين معا)، قمت بكتابة هذه الشيفرة لفعل ذلك:
لكنها لم تعمل على القوائم المتداخلة كما في المثال التالي:
1 جواب على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.