طبقات متعدد در زبان پایتون را توضیح دهید .
طبقات متعدد در زبان پایتون را توضیح دهید .
طبقات متعدد در زبان پایتون را توضیح دهید .
همچنانکه تعداد طبقات افزایش مییابد، inBucket کمی کند میشود. این تابع با دو طبقـه بد کار نمیکند:
low = inBucket(a, 0.0, 0.5)
high = inBucket(a, 0.5, 1)
اما با چهار طبقه کند میشود.
bucket1 = inBucket(a, 0.0, 0.25)
bucket2 = inBucket(a, 0.25, 0.5)
bucket3 = inBucket(a, 0.5, 0.75)
bucket4 = inBucket(a, 0.75, 1.0)
در اینجا دو مشکل وجود دارد، یکی اینکه ما مجبوریم نامهـاي جدیـدي بـراي متغیرهـاي هـر نتیجه داشته باشیم و دیگر اینکه باید عرض طبقات را محاسبه کنیم. ابتدا مشکل دوم را حل میکنیم. اگر تعداد طبقات numBuckets باشد، آنگاه عرض هر طبقه numBuckets/1 خواهد بود. براي محاسبۀ عـرض هـر طبقـه از یـک حلقـه اسـتفاده مـیکنـیم. متغیـر حلقـه، i ، از 1 تـا 1-numBuckets را میشمارد:
bucketWidth = 1.0 / numBuckets
for i in range(numBuckets):
low = i * bucketWidth
high = low + bucketWidth
print low, “to”, high
براي محاسبۀ حد پایین هر طبقه، متغیر حلقه را در عرض طبقه ضـرب مـیکنـیم. حـد بـالاي طبقـه تنهـا بــه انــدازة bucketWidth) عــرض طبقـه)، از حــد پــایین فاصـله دارد. بــا احتسـاب 8 = numBuckets خروجی به صورت زیر است:
0.0 to 0.125
0.125 to 0.25
0.25 to 0.375
0.375 to 0.5
0.5 to 0.625
0.625 to 0.75
0.75 to 0.875
0.875 to 1.0
شما میتوانید همعرض بودن طبقات را که باعث میشود با هم نقطۀ اشتراکی (تداخلی) نداشته باشند، بررسی و تأیید نمایید. همچنین واضح است که تمام بازة 0.0 و 0.1 پوشش داده شده است. اکنون به مشکل اول باز میگردیم. ما به راهی جهت ذخیرة هشت عـدد صـحیح بـا اسـتفاده از متغیر حلقه که به نوبت به تمام طبقات اشاره میکند نیاز داریم. تا به حـال شـما بایـد بـه فکـر لیسـت
افتاده باشید. لیست طبقات باید خارج از حلقه ساخته شود، زیرا تنها یک بار نیاز به انجام این کار است. در میان حلقه، ما inBucket را مکرراً فراخوانی میکنیم و iامین عنصر آن را به هنگام میسازیم:
numBuckets = 8
buckets = [0] * numBuckets
bucketWidth = 1.0 / numBuckets
for i in range(numBuckets):
low = i * bucketWidth
high = low + bucketWidth
buckets[i] = inBucket(list, low, high)
print buckets
این کد با یک لیست 1000 عضوي، لیست طبقات زیر را تولید میکند:
[138, 124, 128, 118, 130, 117, 114, 131]
این اعداد تقریباً نزدیک به 125 هستند و این همان چیزي است که انتظار داشتیم. لااقـل آنهـا آنقدر نزدیک هستند که به کارکرد مولد اعداد تصادفی ایمان بیاوریم.
تمرین 9-4 :این تابع را با چند لیست طولانیتر آزمایش کنید و ببینید که آیا تعداد مقادیر هر
طبقه به سمت عدد ثابتی میل میکنند یا خیر.
برای اموزش های ویدیویی زبان پایتون به بستر ویدیو های اموزشی بروید