جلسه پانزدهم

یاداوری و تاپل و دیکشنری

3 مولفه یک متغییر: 1.نام متغییر 2.آدرس متغییر در حافظه 3.محتوا متغییر

مثال 1: ساخت یک لیست و مقدار دهی 4 عنصر به آن.

				
					s = []
for x in range (1 , 5):
    s.append(x**2)
print (s)
				
			

List Comprehension در پایتون یک روش قدرتمند برای ایجاد لیست های جدید است. این ویژگی به شما امکان می دهد تا در یک خط کد، یک لیست جدید را با استفاده از یک لیست موجود بسازید.

ساختار کلیnew_list = [expression for item in iterable if condition]

– `expression`: عبارتی که برای هر عنصر لیست اولیه محاسبه می شود.

– `item`: هر عنصر لیست اولیه که در حال بررسی است.

– `iterable`: لیستی که می خواهید از آن لیست جدید را ایجاد کنید(تکرار شونده)

– `condition`: شرطی که عناصر لیست اولیه باید برآورده کنند تا در لیست جدید قرار داده شوند (اختیاری).

چند مثال ساده از کاربرد list comprehension در پایتون:

1. ایجاد لیستی از مربع اعداد صحیح 1 تا 5:

				
					squares = [x**2 for x in range(1, 6)]
# Output: [1, 4, 9, 16, 25]
				
			

2. ایجاد لیستی از اعداد زوج بین 1 تا 10:

				
					even_numbers = [x for x in range(1, 11) if x % 2 == 0]
# Output: [2, 4, 6, 8, 10]
				
			

List Comprehension در مقایسه با استفاده از حلقه for و append() برای ایجاد لیست های جدید، کد را بسیار خوانا و فشرده می کند. این امر به افزایش کارایی و سرعت برنامه شما کمک می کند.

تاپل

تاپل هاساختار داده دیگری در پایتون است که شبیه لیست ها هستند، با این تفاوت که مقادیر درون آنها ثابت و غیرقابل تغییر هستند. به عبارت دیگر، تاپل ها immutable هستند می توان برای ذخیره روز های هفته یا ماه های سال از ان استفاده کرد.

ساختار تاپل به این صورت است: my_tuple = (value1, value2, value3, …)

یا به صورت اختصاری:

برخی از ویژگی های مهم تاپل در پایتون:

1. **Immutable**: مقادیر درون تاپل را نمی توان تغییر داد. به عبارت دیگر، نمی توان عناصر تاپل را اضافه، حذف یا جایگزین کرد.

2. **Ordered**: عناصر تاپل مرتب شده و به ترتیب ذخیره می شوند. می توان از اندیس ها برای دسترسی به عناصر استفاده کرد.

3. **Heterogeneous**: تاپل ها می توانند شامل انواع مختلف داده ها باشند، مانند اعداد، رشته ها، لیست ها و حتی تاپل های دیگر.

4. **Efficient**: تاپل ها در مقایسه با لیست ها کم حجم تر و سریع تر هستند، زیرا مقادیر درون آنها ثابت هستند.

5. **Useful for Packing/Unpacking**: تاپل ها برای بسته بندی و باز کردن مقادیر در پایتون بسیار کاربردی هستند.

مثال هایی از استفاده از تاپل ها:

				
					# ایجاد تاپل
point = (2, 3)
person = ('John', 30, 'Engineer')
# دسترسی به عناصر تاپل
print(point[0])  # Output: 2
print(person[1])  # Output: 30
# بسته بندی مقادیر در تاپل
x, y = (4, 5)
print(x)  # Output: 4
print(y)  # Output: 5
# تاپل های درون تاپل
complex_tuple = ((1, 2), (3, 4), (5, 6))
print(complex_tuple[1][0])  # Output: 3
				
			

تاپل ها به دلیل ویژگی immutable بودن آنها، در مواردی که نیاز به داده های ثابت و غیرقابل تغییر است، کاربرد زیادی دارند. همچنین در پردازش های موازی و همچنین به عنوان کلید در دیکشنری ها نیز بسیار مفید هستند.

Conditional tests

Boolean Expressions.1

در پایتون، هر عبارت می تواند به عنوان یک شرط مورد استفاده قرار گیرد. این عبارات می توانند شامل مقایسه ها (==, !=, >, <, >=, <=)، عملگرهای منطقی (and, or, not) و غیره باشند.

Equals x == 42

not equal x != 42

greater than x > 42

or equal to x >= 42

less than x < 42

or equal to x <= 42

2.Membership Operators

شرط های عضویت (in و not in) به شما امکان می دهند تا بررسی کنید آیا یک مقدار در یک مجموعه داده (مانند لیست، رشته یا دیکشنری) وجود دارد یا خیر.

				
					if x in [1, 2, 3]:
    # block of code
				
			

دیکشنری

دیکشنری (Dictionary) در پایتون یکی از ساختارهای داده اصلی است که به شما امکان نگهداری مجموعه ای از کلید-مقدار (key-value) را می دهد. دیکشنری ها داده ها را به صورت جفت کلید-مقدار ذخیره می کنند. این مقدارها می توانند انواع مختلف داده ها باشند مانند رشته ها، اعداد یا حتی تاپل ها.

ساختار دیکشنری

my_dict = {

key1: value1,

key2: value2,

key3: value3,

}

برخی از ویژگی های مهم دیکشنری ها در پایتون:

1. **Unordered**: دیکشنری ها ساختار نامرتب دارند، به این معنی که عناصر آنها براساس ترتیب قرار گرفته نیستند. به همین دلیل، نمی توان از اندیس ها برای دسترسی به عناصر استفاده کرد.

2. **Mutable**: به خلاف تاپل ها، دیکشنری ها قابل تغییر هستند. می توان عناصر را به آنها اضافه، حذف یا تغییر داد.

3. **Heterogeneous**: دیکشنری ها می توانند شامل انواع مختلف داده ها باشند، مانند اعداد، رشته ها، لیست ها و حتی تاپل ها.

4. **Efficient Lookup**: دسترسی به عناصر در دیکشنری ها بسیار سریع است، زیرا آنها بر اساس جداول هش (hash tables) پیاده سازی شده اند.

مثال هایی از استفاده از دیکشنری ها:

				
					# ایجاد دیکشنری
person = {
    "name": "John Doe",
    "age": 30,
    "occupation": "Engineer"
}
# دسترسی به مقادیر
print(person["name"])  # Output: 'John Doe'
print(person["age"])   # Output: 30
# افزودن، تغییر و حذف عناصر
person["city"] = "New York"
person["age"] = 31
del person["occupation"]
# بررسی عضویت
print("name" in person)  # Output: True
print("salary" in person)  # Output: False
# استفاده از متد های مفید
print(person.keys())   # Output: dict_keys(['name', 'age', 'city'])
print(person.values()) # Output: dict_values(['John Doe', 31, 'New York'])
				
			

دیکشنری ها در پایتون بسیار کاربردی هستند و در موارد متعددی مانند پردازش داده ها، نگهداری تنظیمات، انبار کردن اطلاعات و… مورد استفاده قرار می گیرند.

مثال های تدریس شده:

				
					person = { 'name' : 'john' ,'age': 20 , 'high':1.93  }
print(person['name'],person['age'])
##########################
person['diet']=100
print(person)
##########################
for name , number in person.items():
    print(name + ' loves '+ str(number))
##########################
for name in person.keys():
    print(name + 'loves a number. ' )
##########################
for number in person.values():
    print(str(number) + 'is a favorite')