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

السؤال

نشر

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

l = [[1,2,3],[4,5,6],[7,8,9]]

وأريد أن أنقل أماكن عناصر القوائم لتكون كالتالي:

r = [[1,4,7],[2,5,8],[3,6,9]]

وليست كالتالي (باستخدام zip):

r = [(1,4,7),(2,5,8),(3,6,9)]

فما الطريق الصحيحة لفعل ذلك؟ جربت استخدام zip (كما في المثال السابق)لكنني لم أنجح.

Recommended Posts

  • 0
نشر

يوجد طرق عديدة لنقل عناصر القوائم بهذا الشكل، ويمكنك استخدام zip أيضا لفعل ذلك بطريقة أخرى وذلك عن طريق استخدام دالة حلقة التكرار map معها كما في المثال التالي:

map(list, zip(*l))
--> [[1, 4, 7], [2, 5, 8], [3, 6, 9]]

وبالنسبة لمستخدم الإصدار الثالث من بايثون فيمكنهم استخدام هذا السطر:

list(map(list, zip(*l)))

أما إذا لم ترد استخدام zip نهائيا فهنالك حلول أخرى، مثل استخدام numpy مع دوال أخرى كما في المثال التالي:

>>> numpy.asarray(l).T.tolist()
[[1, 4, 7], [2, 5, 8], [3, 6, 9]]

أو يمكنك استخدام دالتي map كما في المثال التالي:

>>> map(list,map(None,*l))
[[1, 4, 7], [2, 5, 8], [3, 6, 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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...