• 0

كيف أنقل أماكن قائمة من القوائم بدون استخدام zip في بايثون؟

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

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 (كما في المثال السابق)لكنني لم أنجح.

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة
  • 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]]

انشر على الشّبكات الاجتماعية


رابط هذه المساهمة

يجب أن تكون عضوًا لدينا لتتمكّن من التعليق

انشاء حساب جديد

يستغرق التسجيل بضع ثوان فقط


سجّل حسابًا جديدًا

تسجيل الدخول

تملك حسابا مسجّلا بالفعل؟


سجّل دخولك الآن