PDA

View Full Version : سوالات یک مبتدی در python



!!Unix!!
جمعه 20 مهر 1386, 13:59 عصر
سلام . من تازه شروع به کار با python کردم . و چند سوال دارم .و چون سوالات ابتدایی هستند تصمیم گرفتم در یک topic مطرح کنم .سعی می کنم فقط سوالاتی که با جستجو در اینترنت نتونستم جوابشو پیدا کنم بپرسم . پیشاپیش برا راهنمایی هاتون ممنونم .
و اما اولین سوال :

اگر اشتباه نکنم ساختار for در python شبیه foreach در php و perl هست .
با این حساب ساختار for 5 downto 1 را چه جوری باید با for بنویسیم؟
( البته به راحتی میشه با while نوشت ولی می خوام بدونم آیا راهی هم وجود داره که با خود for اونو نوشت؟)

Inprise
شنبه 21 مهر 1386, 03:24 صبح
در هر تاپیک یک سوال بپرس و عنوان بحث رو مرتبط با سوال انتخاب کن . ضمنا برای سوالهای خیلی ابتدائی بهتر است مراجع و کتابهای یک زبان برنامه نویسی رو بخونی تا یاد بگیری .

-

برای اینکه در for های پایتون در یک بازه از بالا به پائین بری از range و xrange استفاده کن

دلفی :


for X := 10 downto 1 do ...

روبی :


10.downto(1) {|i| ... }

و مشابهش در پایتون :


for i in xrange(10, 0, -1)

!!Unix!!
شنبه 21 مهر 1386, 11:53 صبح
ممنونم . من کتاب Learning Python از انتشارات OREILLY را مطالعه می کنم که متاسفانه در قسمت توضیحات مربوط به for درباره range صحبت کرده بود ولی xrange نه .
از جوابتون ممنونم .
( همانطور که گفتم تصمیم ندارم سوالات خیلی ابتدایی بپرسم فقط مشکلاتی که در مراجع یا جستجو نتونستم پیدا کنم . در مورد زدن تاپیک های جدا گانه هم چشم .یه سوال برام پیش امد البته از روی کنجکاوی چرا for را مثلا به زبان delphi هم نوشتید ؟ مگه به پایتون ربطی داره یا میشه مثلا در بجای هم در این دو کامپایلر استفاده کرد . البته امتحان کردم و نشد ...)

!!Unix!!
شنبه 21 مهر 1386, 12:58 عصر
یه فرق کوچولو بین range و xrange در تخصیص حافظه هست که برام جالب بود :


The syntax of xrange() is exactly the same as range(), but xrange() populates its range list whenever it is accessed, allowing the memory to be freed when the list is not actively used


موقع چاپ میشه فرقشو درک کرد :


http://img530.imageshack.us/img530/2842/xrangeti7.png

Bayazee
یک شنبه 22 مهر 1386, 16:50 عصر
سلام
فرق بین range و xrange در این هست که برای مثال (range(100 یک آرایه به طول 100 رو ایجاد و در حافظه نگه می داره که اگر این تعداد زیاد باشه فضای زیادی هدر می ره ! اما در روشی دیگر با استفاده از xrange که در حقیقت یک iterator (http://www.python.org/dev/peps/pep-0234/) هستش هربار با اجرای حلقه یک عضو اون ایجاد می شه و برگشت داده می شه . پس به تعبییری می شه گفت هربار یک عضو در حافظه هست !! (به همراه کدی برای ایجاد اعضا) که از نظر میزان فضای استفاده شده خیلی بهینه تر هست . البته از نظر سرعت اجرایی هم xrange بهتر عمل می کنه . البته در آرایه های کوچک این تفاوت سرعت بسیار بسیار ناچیز هست .