ווטסאפ - לינוקס, BSD, קוד פתוח ותוכנה חופשית בעברית. Whatsup - Linux, BSD, open source and free software in Hebrew

 
 
  כניסת חברים · רישום · שכחתי סיסמה  
tux the penguin
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
מתפתחאורח · ·
 

הודעה פורסם: 01/06/2015 - 09:34
נושא ההודעה: פייתון: איך לשטח מערך שמכיל אברים שחלקם מערכים למערך בודד?

אשמח לשמוע את הרעיונות שלכם

יש לי מערך שמכיל ערכים בצורה הבאה

קוד:
list = [1, 2, 3, 4, [10, 20, 30]]


איך אני משטח את המערך הזה למערך בודד שמכיל רק מספרים ולא אברים של מערך?
אני יודע שאפשר לעשות את זה עם לולאה אבל די מרגיש לי שבפייתון יש דרך פשוטה יותר לעשות את זה.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
ויטליאורח · ·
 

הודעה פורסם: 01/06/2015 - 10:01
נושא ההודעה:

כן הנה:
http://stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python

תכלס אבל לעשות את זה בלולאה זה לגמרי לגיטימי, בתנאי שאתה דוחף את זה
לפונקצית עזר קטנה, נגיד flatten() או משהו, זה משאיר לך את הקוד נקי, וזה מה
שחשוב לדעתי Smile
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 01/06/2015 - 10:13
נושא ההודעה:

ויטלי :
כן הנה:
http://stackoverflow.com/questions/952914/making-a-flat-list-out-of-list-of-lists-in-python

תכלס אבל לעשות את זה בלולאה זה לגמרי לגיטימי, בתנאי שאתה דוחף את זה
לפונקצית עזר קטנה, נגיד flatten() או משהו, זה משאיר לך את הקוד נקי, וזה מה
שחשוב לדעתי Smile


ראיתי את זה
הרעיון שלו עובד כל עוד כל האברים הם מערכים במידה ויש לך חלק מהאברים שהם מערכך וחלק מהאברים שהם לא זה הפתרון הזה נכשל.
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
am1לא בפורום כעת ת.הצטרפות: 13/10/2008 · הודעות: 237 ·
 

הודעה פורסם: 01/06/2015 - 13:33
נושא ההודעה:

1.
ראה גם
http://stackoverflow.com/questions/10823877/what-is-the-fastest-way-to-flatten-arbitrarily-nested-lists-in-python?lq=1
בפרט בסוף.

2.
ראה גם כאן
http://stackoverflow.com/questions/2158395/flatten-an-irregular-list-of-lists-in-python
את התשובה החמישית שם (שקיבלה את הניקוד 15).
 
 צפיה בפרופיל המשתמש שלח הודעה פרטית  
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
מתפתחאורח · ·
 

הודעה פורסם: 02/06/2015 - 22:16
נושא ההודעה:

טוב בסוף ישבתי לכתוב משהו קטן לבד
קוד:

a = [1, 2, 3, [10, 20, 30]]
my_list = []
for i in a:
    my_list.extend(i) if type(i) == list else my_list.append(i)

In [5]: my_list
Out[5]: [1, 2, 3, 10, 20, 30]

 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
אורח · ·
 

הודעה פורסם: 04/06/2015 - 07:22
נושא ההודעה:

שים לב שהפתרון שלך עובד רק רמה אחת פנימה; נגיד.:
קוד:
a=[[[1,2,3,4,5,6],7,8],9,10]

לא ישוטח לחלוטין
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
פינגווין אדוםאורח · ·
 

הודעה פורסם: 04/06/2015 - 11:09
נושא ההודעה: מימוש לא מושלם בפרל

פיצלתי שורות לטובת הקריאות.
קוד:

sub flat {
   ref ($_[0])
         ? map {flat ($_)} @{$_[0]}
         : $_[0]
}
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
פינגווין אדוםאורח · ·
 

הודעה פורסם: 04/06/2015 - 11:17
נושא ההודעה:

או פשוט יותר
קוד:

sub flat {
    map {
        ref ($_) ? flat ($_) : $_
    } @{$_[0]}
}
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
פינגווין אדוםאורח · ·
 

הודעה פורסם: 04/06/2015 - 11:28
נושא ההודעה:

או אפילו
קוד:

sub flat {
    map { ref ($_) ? flat (@{$_}) : $_} @_
}
 
   
תגובה  עם ציטוט חזרה למעלה
חזרה לתוכן הדיון
הצגת הודעות מלפני:     
מעבר אל:  
כל הזמנים הם GMT + 2 שעות
תגובה לנושא
צפיה בנושא הבא Printable version התחבר כדי לבדוק הודעות פרטיות צפיה בנושא הקודם
PNphpBB2 © 2003-2004 

תוכן הדיון

  1. אורח [מתפתח]
  2. אורח [ויטלי]
  3. אורח
  4. am1
  5. אורח [מתפתח]
  6. אורח
  7. אורח [פינגווין אדום]
  8. אורח [פינגווין אדום]
  9. אורח [פינגווין אדום]