2 תשובות
באיזה משחק?
אנונימי
אני חושב שהתכוונת לפונקציה
xrange היא פונקציה המקבלת 2 ערכים וערך פוטנציאלי
start מסוג long
end מסוג long
ואופציונלית step מסוג long
הפונקציה עצמה מייצרת אובייקט מסוג xrange אשר פועל כגנרטור
xrange תומך בגישה אקראית, באיטרציה ובגישה לאורך שלו
מה שxrange עושה, הוא בעצם אוסף לא ניתן לשינוי (immutable) אשר כל האיברים שלו הם קומפיוטציה של end-start+index*step (כברירת מחדל, step הוא 1)
כאשר את ניגשת לאיבר, אז הקומפיוטציה מתבצעת, כלומר האוסף עצמו עצל, עד שלא צריכים משהו הוא לא מחשב אותו
למה זה שימושי? לערכים גדולים. אם את צריכה רשימה של 10000 לקוחות שונים נגיד, ואת מייצרת עם range רשימה כזאת, כל ה10000 לקוחות יווצרו ברגע שאת קוראת לrange, זה המון חישובים בבת אחת
עם xrange, הלקוחות יווצרו רק ברגע שתיגשי אליהם, חוסך את כל הזמן חישוב ביצור ורק כאשר ניגשים הוא יוצר את האובייקט
ואם יש לקוח שמעולם לא ניגשת אליו, הוא לעולם לא יצור אותו, חוסך לך הרבה מקום
אבל ל xrange יש overhead, הוא צריך לשמור את חישוב המספרים לכל איבר, אז הוא הרבה יותר גדול מrange, והרבה יותר איטי לגישה אקראית, ולכן אם אין התעסקות בדברים מאוד גדולים אין צורך להשתמש בxrange
xrange היא פונקציה המקבלת 2 ערכים וערך פוטנציאלי
start מסוג long
end מסוג long
ואופציונלית step מסוג long
הפונקציה עצמה מייצרת אובייקט מסוג xrange אשר פועל כגנרטור
xrange תומך בגישה אקראית, באיטרציה ובגישה לאורך שלו
מה שxrange עושה, הוא בעצם אוסף לא ניתן לשינוי (immutable) אשר כל האיברים שלו הם קומפיוטציה של end-start+index*step (כברירת מחדל, step הוא 1)
כאשר את ניגשת לאיבר, אז הקומפיוטציה מתבצעת, כלומר האוסף עצמו עצל, עד שלא צריכים משהו הוא לא מחשב אותו
למה זה שימושי? לערכים גדולים. אם את צריכה רשימה של 10000 לקוחות שונים נגיד, ואת מייצרת עם range רשימה כזאת, כל ה10000 לקוחות יווצרו ברגע שאת קוראת לrange, זה המון חישובים בבת אחת
עם xrange, הלקוחות יווצרו רק ברגע שתיגשי אליהם, חוסך את כל הזמן חישוב ביצור ורק כאשר ניגשים הוא יוצר את האובייקט
ואם יש לקוח שמעולם לא ניגשת אליו, הוא לעולם לא יצור אותו, חוסך לך הרבה מקום
אבל ל xrange יש overhead, הוא צריך לשמור את חישוב המספרים לכל איבר, אז הוא הרבה יותר גדול מrange, והרבה יותר איטי לגישה אקראית, ולכן אם אין התעסקות בדברים מאוד גדולים אין צורך להשתמש בxrange
באותו הנושא: