دوره H برنامه نویسی پایتون
فصل پنجم: نوعهای دیگر
درس پنجم: درک لیست (List Comprehensions) در پایتون
List Comprehensions (درک لیست) در پیاتون، روشی ساده و مفید برای ایجاد سریعتر لیستهایی است که محتوای آنها، از یک قانون ساده پیروی میکنند. برای مثال:
# a list comprehension cubes = [i**3 for i in range(5)] print(cubes)
خروجی:
>>> [0, 1, 8, 27, 64] >>>
در اینجا یک range پنج عضوی ایجاد کردیم که هرکدام از اعضای آن را یک i در نظر میگیریم، سپس هر i را به توان سه رسیده و به لیست اضافه میشود. بنابراین، این range که پنج عضو آن 0 تا خود 4 است، هرکدام به توان 3 رسیده و سپس در لیست اضافه میشوند.
شرط if در List Comprehensions
یک «List Comprehensions»، میتواند شامل دستور if نیز باشد. به این صورت که این شرط، برروی اعضا بررسی شده و در صورت True بودن، آن عضو به لیست اضافه میشود. برای مثال:
evens=[i**2 for i in range(10) if i**2 % 2 == 0] print(evens)
خروجی:
>>> [0, 4, 16, 36, 64] >>>
در اینجا یک range ده عضوی ایجاد کردیم که از 0 تا خود 9 میباشد. سپس هر عضو به توان دو رسیده و در صورتی که پس از رسیدن به توان 2، بر دو بخشپذیر باشد (زوج باشد)، مقدار به توان دوی آن، به لیست اضافه میشود؛ که در اینجا، 4 عضو از ده عضو به لیست اضافه شده است.
توجه داشته باشید که مقدار قبل از for به لیست اضافه میشود و این هیچ ربطی به توان دوی داخل شرط ندارد.
خطای MemoryError
تلاش برای ایجاد یک لیست در یک range خیلی گسترده و بزرگ، باعث ایجاد خطای MemoryError میگردد. در مثال زیر، چنین اتفاقی رخ داده و حافظه از دسترس خارج شده است:
even = [2*i for i in range(10**100)]
خروجی:
>>> MemoryError >>>
نظرات ثبت شده بدون دیدگاه