آموزش پایتون – 3 ساختار داده

Summarize this content to 400 words in Persian Lang
مقدمه
ساختار داده ابزاری برای سازماندهی داده ها است. نه تنها برای ذخیره سازی بلکه برای حل برخی مشکلات. برخی از ساختارهای داده در پایتون از جمله لیست، دیکشنری، تاپل و مجموعه وجود دارد.
فهرست کنید
لیست یک ساختار داده ای است که یک آیتم را به صورت متوالی با استفاده از شاخص ها ذخیره می کند. این تصویر ساختار داده لیست است.
راه های زیادی برای ایجاد لیست در پایتون وجود دارد.
مقدار را مستقیماً در یک لیست مقداردهی اولیه کنید.
items = [1,2,3,4]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
یک لیست خالی را راه اندازی کنید.
items = []
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
آیتم داخل لیست مستقیماً از طریق فهرست قابل دسترسی است.
items = [1,2,3,4,5]
# access item at index 2
result = items[2]
print(result) # returns 3
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
همه موارد داخل لیست را می توان با استفاده از for حلقه این یک نمونه است.
# create a new list
items = [1,2,3,4,5]
# retrieve each item inside a list
for item in items:
print(item)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
1
2
3
4
5
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
بر اساس کد بالا، لیست فراخوانی شده است items با آیتم های اختصاص داده شده ایجاد می شود. هر مورد با استفاده از بازیابی می شود for حلقه
لیست عملیات اساسی
این append() تابع یک مورد جدید را به لیست اضافه می کند. این یک نمونه از append() استفاده
# create empty list
shopping_list = []
# add some items
shopping_list.append(“apple”)
shopping_list.append(“milk”)
shopping_list.append(“cereal”)
# retrieve all items
for item in shopping_list:
print(item)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
apple
milk
cereal
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این append() در تصویر زیر نشان داده شده است.
علاوه بر append() تابع، insert() تابع یک مورد جدید را در یک شاخص خاص اضافه می کند. این یک نمونه است.
items = [“apple”,”banana”,”mango”,”coffee”]
# add new item at index 1
items.insert(1,”cereal”)
# retrieve all items
for item in items:
print(item)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
apple
cereal
banana
mango
coffee
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این insert() در تصویر زیر نشان داده شده است.
به روز رسانی یک مورد در یک لیست ساده است. فقط فهرست مورد را مشخص کنید سپس آن را با آیتم به روز شده تغییر دهید.
# create a list
drinks = [“milkshake”,”black tea”,”banana milk”,”mango juice”]
# update value at index 2
drinks[2] = “chocolate milk”
print(f”value at index 2: {drinks[2]}”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
value at index 2: chocolate milk
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این remove() تابع یک مورد را از لیست حذف می کند. این یک نمونه است.
items = [“apple”,”banana”,”mango”,”coffee”]
# remove “mango”
items.remove(“mango”)
# remove item at index 1
items.remove(items[1])
print(“after removed”)
for item in items:
print(item)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
after removed
apple
coffee
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
آیتم های داخل یک لیست را می توان با تعیین نمایه شروع و پایان فهرست انتخاب کرد. این ساختار اساسی برای انتخاب موارد در یک لیست است.
list_name[start:end]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
موارد از بین انتخاب می شوند start ایندکس تا اما بدون احتساب end شاخص این نمونه ای از انتخاب موارد در یک لیست است.
items = [“apple”,”mango”,”papaya”,”coconut”,”banana”]
# select items from index 1 up to but not including index 3
selected = items[1:3]
# show all items
print(f”all items: {items}”)
# show the selected items
print(f”selected: {selected}”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
all items: [‘apple’, ‘mango’, ‘papaya’, ‘coconut’, ‘banana’] selected: [‘mango’, ‘papaya’]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
درک لیست
درک لیست یک راه “عملکردی” برای ایجاد یک لیست است. برای درک درک لیست، بیایید نگاهی به مثالی از ایجاد لیستی که حاوی مقادیر حتی با استفاده از رویکرد تکراری است بیندازیم.
evens = []
for i in range(1,11):
evens.append(i*2)
print(evens)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
بر اساس کد بالا، اعداد زوج با استفاده از رویکرد تکرار شونده با a تولید می شوند for حلقه مثال بالا را می توان با استفاده از درک لیست نیز به دست آورد. این نمونه ای از تولید اعداد زوج با استفاده از درک لیست است.
evens = [x*2 for x in range(1,11)] # using list comprehension
print(evens)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
بر اساس کد بالا، رویکرد درک لیست کد مختصرتر و نتیجه مشابه روش تکراری قبلی را ارائه می دهد.
درک لیست را می توان همراه با استفاده کرد if شاخه در این مثال، درک لیست برای فیلتر کردن مقادیر خاص بر اساس شرایط خاص استفاده می شود.
samples = [12,32,55,10,2,57,66]
result = [s for s in samples if s % 4 == 0] # using list comprehension
print(result)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
[12, 32]وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این نسخه تکراری مثال قبلی است.
samples = [12,32,55,10,2,57,66]
result = []
for s in samples:
if s % 4 == 0:
result.append(s)
print(result)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
فهرست چند بعدی
لیست را می توان در یک رویکرد چند بعدی مانند یک ماتریس ذخیره کرد. این نمونه ای از اعلام یک لیست چند بعدی برای ذخیره یک ماتریس اعداد است.
matrix = [
[1,2,3],
[4,5,6],
[7,8,9],
]
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مورد را می توان با دو براکت مربع ([x][y]) با مشخص کردن x که نمایانگر فهرست اصلی در حالی است y نمایه آیتم را در داخل لیست تودرتو نشان می دهد. این تصویر ماتریس اعداد است.
آیتم های داخل لیست چند بعدی را می توان با استفاده از یک حلقه for تو در تو بازیابی کرد.
matrix = [
[1,2,3],
[4,5,6],
[7,8,9],
]
# retrieve all items
for m in matrix:
for num in m:
print(num)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
1
2
3
4
5
6
7
8
9
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
فرهنگ لغت
فرهنگ لغت یک ساختار داده است که رکوردها را به صورت جفت کلید-مقدار ذخیره می کند. هر کلید باید منحصر به فرد باشد، در حالی که مقادیر تکراری مجاز هستند. این ساختار داده فرهنگ لغت را نشان می دهد:
راه های زیادی برای ایجاد فرهنگ لغت وجود دارد:
یک فرهنگ لغت با رکوردهای اولیه ایجاد کنید.
courses = {
“C001″:”Algorithm”,
“C002″:”Data Structure”,
“C003″:”Programming in Python”,
}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
یک فرهنگ لغت خالی ایجاد کنید.
courses = {}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
تمام رکوردهای داخل فرهنگ لغت را می توان با استفاده از آن بازیابی کرد for حلقه این یک نمونه است.
# create a dictionary
courses = {
“C001″:”Algorithm”,
“C002″:”Data Structure”,
“C003″:”Programming in Python”,
}
# retrieve all items
# “k” represents item’s key
# “v” represents item’s value
for k, v in courses.items():
print(k,v)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
C001 Algorithm
C002 Data Structure
C003 Programming in Python
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
عملیات پایه دیکشنری
برای درج یک مورد جدید در یک فرهنگ لغت، جفت کلید-مقدار مورد را مشخص کنید. مطمئن شوید که کلید منحصر به فرد است.
map_name[‘key’] = value
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این نمونه ای از درج یک مورد جدید در فرهنگ لغت است.
# create an empty dictionary
courses = {}
# insert courses
courses[‘C001’] = ‘Algorithm’
courses[‘C002’] = ‘Data Engineer’
courses[‘C003’] = ‘Data Science’
# retrieve all courses
for k, v in courses.items():
print(k,v)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
C001 Algorithm
C002 Data Engineer
C003 Data Science
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
برای به روز رسانی یک مورد در فرهنگ لغت، کلید مورد را مشخص کنید و سپس مقدار به روز شده را وارد کنید.
courses = {
“C001″:”Algorithm”,
“C002″:”Data Engineer”,
“C003″:”Data Science”,
}
print(f”before update: {courses[‘C002’]}”)
# update course with key equals to C002
courses[‘C002’] = “Data Analyst”
print(f”after update: {courses[‘C002’]}”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
before update: Data Engineer
after update: Data Analyst
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
کلیدها و مقادیر موجود در فرهنگ لغت را می توان به طور مستقل با استفاده از روش های مختلف در دسترس قرار داد.
courses = {
“C001″:”Algorithm”,
“C002″:”Data Engineer”,
“C003″:”Data Science”,
}
# retrieve keys
course_keys = courses.keys()
print(f”keys: {course_keys}”)
# retrieve values
course_values = courses.values()
print(f”values: {course_values}”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
keys: dict_keys([‘C001’, ‘C002’, ‘C003’])
values: dict_values([‘Algorithm’, ‘Data Engineer’, ‘Data Science’])
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این pop() متد بر اساس کلید داده شده مورد را از فرهنگ لغت حذف می کند.
courses = {
“C001″:”Algorithm”,
“C002″:”Data Engineer”,
“C003″:”Data Science”,
}
# remove course with key equals to C003
courses.pop(‘C003’)
for k, v in courses.items():
print(k,v)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
C001 Algorithm
C002 Data Engineer
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این clear() روش تمام موارد داخل فرهنگ لغت را حذف می کند.
courses = {
“C001″:”Algorithm”,
“C002″:”Data Engineer”,
“C003″:”Data Science”,
}
# remove all items
courses.clear()
# check if the dictionary is empty
is_empty = len(courses.values()) == 0
print(is_empty)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
True
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
چندتایی
تاپل یک ساختار داده تغییرناپذیر برای ذخیره مقادیر زیادی است. تاپل ممکن است حاوی مقادیر قابل تغییر باشد. دو راه برای ایجاد یک تاپل جدید وجود دارد.
یک تاپل با مقادیر اختصاص داده شده ایجاد کنید.
# create a tuple with assigned values
fruits = (“apple”,”banana”,”mango”)
# retrieve all values
for f in fruits:
print(f)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
apple
banana
mango
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
یک تاپل خالی ایجاد کنید.
# create an empty tuple
fruits = ()
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
عملیات پایه تاپل
یک تاپل تغییرناپذیر است، به این معنی که مقادیر آن را نمیتوان پس از ایجاد تغییر یا بهروزرسانی کرد.
# create a tuple with assigned values
fruits = (“apple”,”banana”,”mango”)
# error, tuple is immutable
fruits[0] = “starfruit”
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مقادیر تاپل را میتوان با استفاده از «باز کردن بستهبندی چندگانه» بازیابی کرد (این مفهوم مشابه ساختارشکنی شی در جاوا اسکریپت است).
هنگام باز کردن بسته بندی، اندازه مقادیر بسته بندی نشده باید با اندازه تاپل برابر باشد.
# create a tuple with assigned values
fruits = (“apple”,”banana”,”mango”)
# tuple unpacking
(one, two, three) = fruits
print(one,two,three)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
apple banana mango
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
تنظیم کنید
مجموعه یک ساختار داده نامرتب است که فقط شامل موارد منحصر به فرد است. راه های زیادی برای ایجاد یک مجموعه وجود دارد.
# create a set with assigned values
data = {1,2,3,4}
# create a set with set() function
records = set([‘milk’,’coffee’,’juice’])
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مجموعه خالی را می توان با استفاده از set() تابع
empty_set = set()
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ساختار داده مجموعه مقادیر تکراری را به طور خودکار حذف می کند.
# create a set with assigned values
data = {1,1,1,2,2,2,3,3,4,5,4}
for d in data:
print(d)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
1
2
3
4
5
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مقادیر داخل مجموعه را می توان با استفاده از for حلقه
# create a set with assigned values
data = {1,2,3,4}
for d in data:
print(d)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
1
2
3
4
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
تنظیم عملیات پایه
ساختار داده مجموعه عملیات های زیادی مانند اتحاد، تقاطع، تفاوت و تفاوت متقارن را ارائه می دهد.
عملیات اتحاد همه موارد را در هر دو مجموعه برمی گرداند.
data1 = {‘burger’,’kebab’,’noodle’,’pasta’,’pizza’}
data2 = {‘burger’,’french fries’,’pasta’,’cereal’,’biscuit’}
result = data1 | data2
print(result)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
{‘burger’, ‘cereal’, ‘french fries’, ‘noodle’, ‘kebab’, ‘pizza’, ‘pasta’, ‘biscuit’}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
عملیات تقاطع تمام موارد موجود در تقاطع مجموعه ها را برمی گرداند.
data1 = {‘burger’,’kebab’,’noodle’,’pasta’,’pizza’}
data2 = {‘burger’,’french fries’,’pasta’,’cereal’,’biscuit’}
result = data1 & data2
print(result)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
{‘burger’, ‘pasta’}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
عملیات تفاوت همه مواردی را که فقط در یک مجموعه خاص وجود دارند برمی گرداند.
data1 = {‘burger’,’kebab’,’noodle’,’pasta’,’pizza’}
data2 = {‘burger’,’french fries’,’pasta’,’cereal’,’biscuit’}
result = data1 – data2 # items in data1 but no in data2
print(result)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
{‘pizza’, ‘kebab’, ‘noodle’}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
عملیات تفاضل متقارن تمام مواردی را که در هر یک از مجموعه ها وجود دارد، اما در تقاطع وجود ندارد، برمی گرداند.
data1 = {‘burger’,’kebab’,’noodle’,’pasta’,’pizza’}
data2 = {‘burger’,’french fries’,’pasta’,’cereal’,’biscuit’}
result = data1 ^ data2 # items in data1 or data2 but not both
print(result)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
{‘biscuit’, ‘kebab’, ‘cereal’, ‘pizza’, ‘noodle’, ‘french fries’}
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
مقدمه ای بر تابع
این تابع یک واحد قابل فراخوانی است که حاوی دستورالعملهایی است که هدف آن کاهش تکرار کد و سازماندهی وظایف پیچیده است. دو نوع وجود دارد: توابع void (بدون مقدار بازگشتی) و آنهایی که یک مقدار را برمی گردانند.
این ساختار اصلی تابع در پایتون است.
def function_name(args):
function body
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این مثال تابع void (بدون مقدار بازگشتی) در پایتون است.
# create a function
def hello():
print(“hello!”)
# call the function
hello()
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
hello!
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
بر اساس کد بالا، تابع فراخوانی شده است hello() ایجاد می شود. تابع با تعیین نام تابع به دنبال پرانتز فراخوانی می شود ().
این مثال تابع با مقدار بازگشتی است.
# create a function with return value
def add(a,b):
return a + b
result = add(2,4)
print(result)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
خروجی
6
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
بر اساس کد بالا، تابع فراخوانی شده است add() برای جمع دو عدد ایجاد می شود. مقدار بازگشتی از add() تابع در داخل ذخیره می شود result متغیر
هنگام کار با تابع مقدار بازگشتی، مطمئن شوید که از مقدار برگشتی استفاده می شود.
مبحث توابع در پایتون در فصلی جداگانه به تفصیل توضیح داده خواهد شد.
مثال – برنامه ساده Todo List
بیایید یک برنامه لیست کار ساده ایجاد کنیم. این برنامه از لیست به عنوان ذخیره سازی برای کارها استفاده می کند و از تابع برای کد پاک کننده استفاده می کند.
اولین قدم واردات است uuid بسته و لیستی به نام ایجاد کنید todos برای ذخیره سوابق todo این uuid بسته به عنوان شناسه (ID) برای رکورد todo استفاده می شود.
import uuid
# create a local storage for storing todos
todos = []
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
پس از آن، یک را ایجاد کنید view_todos() تابعی برای بازیابی تمام رکوردهای TODO. تمام رکوردهای TODO با استفاده از آن بازیابی می شوند for حلقه
def view_todos():
“””
view all todos
“””
print(“all todos”)
for todo in todos:
print(“====”)
print(f”id: {todo[“id”]}”)
print(f”title: {todo[“title”]}”)
print(“====”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ایجاد یک view_todo() تابع برای بازیابی رکورد TODO با شناسه مشخص شده. هر رکورد TODO در داخل بررسی می شود for حلقه برای بررسی اینکه آیا ID فعلی todo برابر با شناسه مشخص شده است یا خیر. اگر مطابقت داشته باشد، رکورد انجام کار نمایش داده می شود.
def view_todo(todo_id):
“””
view todo by ID
“””
for todo in todos:
if todo[“id”] == todo_id:
print(“====”)
print(f”id: {todo[“id”]}”)
print(f”title: {todo[“title”]}”)
print(“====”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ایجاد یک create_todo() عملکرد ایجاد یک todo جدید. رکورد todo به عنوان یک فرهنگ لغت با نشان داده می شود id و title زمینه
def create_todo(todo_input):
“””
create a new todo
“””
new_todo = {
“id”:uuid.uuid4().hex,
“title”:todo_input
}
todos.append(new_todo)
print(“todo added!”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ایجاد یک update_todo() عملکرد به روز رسانی یک TODO. در این تابع، رکورد todo توسط ID مشخص شده به روز می شود.
def update_todo(todo_id,todo_input):
“””
update existing todo
“””
for todo in todos:
if todo[“id”] == todo_id:
todo[“title”] = todo_input
print(“todo updated!”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
ایجاد یک delete_todo() تابع حذف یک کار در این تابع، رکورد todo توسط ID مشخص شده حذف می شود.
def delete_todo(todo_id):
“””
delete todo
“””
for todo in todos:
if todo[“id”] == todo_id:
todos.remove(todo)
print(“todo deleted!”)
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
در نهایت یک تابع به نام ایجاد کنید display_menu() برای نمایش منوی اصلی برنامه
def display_menu():
“””
displays the main menu of the application
“””
# create a variable for storing user’s choice
choice = 0
while choice != 6:
print(“Simple Todo App”)
print(“1. view all todos”)
print(“2. view todo by ID”)
print(“3. create a new todo”)
print(“4. update todo”)
print(“5. delete todo”)
print(“6. exit”)
print(“—————“)
choice = int(input(“insert choice: “))
match choice:
case 1:
view_todos()
case 2:
todo_id = input(“insert todo ID: “)
view_todo(todo_id)
case 3:
todo_input = input(“insert new todo: “)
create_todo(todo_input)
case 4:
todo_id = input(“insert todo ID: “)
todo_input = input(“insert updated todo: “)
update_todo(todo_id,todo_input)
case 5:
todo_id = input(“insert todo ID: “)
delete_todo(todo_id)
case 6:
print(“good bye”)
case _:
print(“invalid choice, please input 1-6”)
# call the function
display_menu()
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این کد کامل است.
import uuid
# create a local storage for storing todos
todos = []
def view_todos():
“””
view all todos
“””
print(“all todos”)
for todo in todos:
print(“====”)
print(f”id: {todo[“id”]}”)
print(f”title: {todo[“title”]}”)
print(“====”)
def view_todo(todo_id):
“””
view todo by ID
“””
for todo in todos:
if todo[“id”] == todo_id:
print(“====”)
print(f”id: {todo[“id”]}”)
print(f”title: {todo[“title”]}”)
print(“====”)
def create_todo(todo_input):
“””
create a new todo
“””
new_todo = {
“id”:uuid.uuid4().hex,
“title”:todo_input
}
todos.append(new_todo)
print(“todo added!”)
def update_todo(todo_id,todo_input):
“””
update existing todo
“””
for todo in todos:
if todo[“id”] == todo_id:
todo[“title”] = todo_input
print(“todo updated!”)
def delete_todo(todo_id):
“””
delete todo
“””
for todo in todos:
if todo[“id”] == todo_id:
todos.remove(todo)
print(“todo deleted!”)
def display_menu():
“””
displays the main menu of the application
“””
# create a variable for storing user’s choice
choice = 0
while choice != 6:
print(“Simple Todo App”)
print(“1. view all todos”)
print(“2. view todo by ID”)
print(“3. create a new todo”)
print(“4. update todo”)
print(“5. delete todo”)
print(“6. exit”)
print(“—————“)
choice = int(input(“insert choice: “))
match choice:
case 1:
view_todos()
case 2:
todo_id = input(“insert todo ID: “)
view_todo(todo_id)
case 3:
todo_input = input(“insert new todo: “)
create_todo(todo_input)
case 4:
todo_id = input(“insert todo ID: “)
todo_input = input(“insert updated todo: “)
update_todo(todo_id,todo_input)
case 5:
todo_id = input(“insert todo ID: “)
delete_todo(todo_id)
case 6:
print(“good bye”)
case _:
print(“invalid choice, please input 1-6”)
# call the function
display_menu()
وارد حالت تمام صفحه شوید
از حالت تمام صفحه خارج شوید
این خروجی برنامه است.
منابع
امیدوارم این مقاله به شما در یادگیری پایتون کمک کند. اگر بازخوردی دارید، لطفا در قسمت نظرات به من بگویید.
مقدمه
ساختار داده ابزاری برای سازماندهی داده ها است. نه تنها برای ذخیره سازی بلکه برای حل برخی مشکلات. برخی از ساختارهای داده در پایتون از جمله لیست، دیکشنری، تاپل و مجموعه وجود دارد.
فهرست کنید
لیست یک ساختار داده ای است که یک آیتم را به صورت متوالی با استفاده از شاخص ها ذخیره می کند. این تصویر ساختار داده لیست است.
راه های زیادی برای ایجاد لیست در پایتون وجود دارد.
- مقدار را مستقیماً در یک لیست مقداردهی اولیه کنید.
items = [1,2,3,4]
- یک لیست خالی را راه اندازی کنید.
items = []
آیتم داخل لیست مستقیماً از طریق فهرست قابل دسترسی است.
items = [1,2,3,4,5]
# access item at index 2
result = items[2]
print(result) # returns 3
همه موارد داخل لیست را می توان با استفاده از for
حلقه این یک نمونه است.
# create a new list
items = [1,2,3,4,5]
# retrieve each item inside a list
for item in items:
print(item)
خروجی
1
2
3
4
5
بر اساس کد بالا، لیست فراخوانی شده است items
با آیتم های اختصاص داده شده ایجاد می شود. هر مورد با استفاده از بازیابی می شود for
حلقه
لیست عملیات اساسی
این append()
تابع یک مورد جدید را به لیست اضافه می کند. این یک نمونه از append()
استفاده
# create empty list
shopping_list = []
# add some items
shopping_list.append("apple")
shopping_list.append("milk")
shopping_list.append("cereal")
# retrieve all items
for item in shopping_list:
print(item)
خروجی
apple
milk
cereal
این append()
در تصویر زیر نشان داده شده است.
علاوه بر append()
تابع، insert()
تابع یک مورد جدید را در یک شاخص خاص اضافه می کند. این یک نمونه است.
items = ["apple","banana","mango","coffee"]
# add new item at index 1
items.insert(1,"cereal")
# retrieve all items
for item in items:
print(item)
خروجی
apple
cereal
banana
mango
coffee
این insert()
در تصویر زیر نشان داده شده است.
به روز رسانی یک مورد در یک لیست ساده است. فقط فهرست مورد را مشخص کنید سپس آن را با آیتم به روز شده تغییر دهید.
# create a list
drinks = ["milkshake","black tea","banana milk","mango juice"]
# update value at index 2
drinks[2] = "chocolate milk"
print(f"value at index 2: {drinks[2]}")
خروجی
value at index 2: chocolate milk
این remove()
تابع یک مورد را از لیست حذف می کند. این یک نمونه است.
items = ["apple","banana","mango","coffee"]
# remove "mango"
items.remove("mango")
# remove item at index 1
items.remove(items[1])
print("after removed")
for item in items:
print(item)
خروجی
after removed
apple
coffee
آیتم های داخل یک لیست را می توان با تعیین نمایه شروع و پایان فهرست انتخاب کرد. این ساختار اساسی برای انتخاب موارد در یک لیست است.
list_name[start:end]
موارد از بین انتخاب می شوند start
ایندکس تا اما بدون احتساب end
شاخص این نمونه ای از انتخاب موارد در یک لیست است.
items = ["apple","mango","papaya","coconut","banana"]
# select items from index 1 up to but not including index 3
selected = items[1:3]
# show all items
print(f"all items: {items}")
# show the selected items
print(f"selected: {selected}")
خروجی
all items: ['apple', 'mango', 'papaya', 'coconut', 'banana']
selected: ['mango', 'papaya']
درک لیست
درک لیست یک راه “عملکردی” برای ایجاد یک لیست است. برای درک درک لیست، بیایید نگاهی به مثالی از ایجاد لیستی که حاوی مقادیر حتی با استفاده از رویکرد تکراری است بیندازیم.
evens = []
for i in range(1,11):
evens.append(i*2)
print(evens)
خروجی
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
بر اساس کد بالا، اعداد زوج با استفاده از رویکرد تکرار شونده با a تولید می شوند for
حلقه مثال بالا را می توان با استفاده از درک لیست نیز به دست آورد. این نمونه ای از تولید اعداد زوج با استفاده از درک لیست است.
evens = [x*2 for x in range(1,11)] # using list comprehension
print(evens)
خروجی
[2, 4, 6, 8, 10, 12, 14, 16, 18, 20]
بر اساس کد بالا، رویکرد درک لیست کد مختصرتر و نتیجه مشابه روش تکراری قبلی را ارائه می دهد.
درک لیست را می توان همراه با استفاده کرد if
شاخه در این مثال، درک لیست برای فیلتر کردن مقادیر خاص بر اساس شرایط خاص استفاده می شود.
samples = [12,32,55,10,2,57,66]
result = [s for s in samples if s % 4 == 0] # using list comprehension
print(result)
خروجی
[12, 32]
این نسخه تکراری مثال قبلی است.
samples = [12,32,55,10,2,57,66]
result = []
for s in samples:
if s % 4 == 0:
result.append(s)
print(result)
فهرست چند بعدی
لیست را می توان در یک رویکرد چند بعدی مانند یک ماتریس ذخیره کرد. این نمونه ای از اعلام یک لیست چند بعدی برای ذخیره یک ماتریس اعداد است.
matrix = [
[1,2,3],
[4,5,6],
[7,8,9],
]
مورد را می توان با دو براکت مربع ([x][y]
) با مشخص کردن x
که نمایانگر فهرست اصلی در حالی است y
نمایه آیتم را در داخل لیست تودرتو نشان می دهد. این تصویر ماتریس اعداد است.
آیتم های داخل لیست چند بعدی را می توان با استفاده از یک حلقه for تو در تو بازیابی کرد.
matrix = [
[1,2,3],
[4,5,6],
[7,8,9],
]
# retrieve all items
for m in matrix:
for num in m:
print(num)
خروجی
1
2
3
4
5
6
7
8
9
فرهنگ لغت
فرهنگ لغت یک ساختار داده است که رکوردها را به صورت جفت کلید-مقدار ذخیره می کند. هر کلید باید منحصر به فرد باشد، در حالی که مقادیر تکراری مجاز هستند. این ساختار داده فرهنگ لغت را نشان می دهد:
راه های زیادی برای ایجاد فرهنگ لغت وجود دارد:
- یک فرهنگ لغت با رکوردهای اولیه ایجاد کنید.
courses = {
"C001":"Algorithm",
"C002":"Data Structure",
"C003":"Programming in Python",
}
- یک فرهنگ لغت خالی ایجاد کنید.
courses = {}
تمام رکوردهای داخل فرهنگ لغت را می توان با استفاده از آن بازیابی کرد for
حلقه این یک نمونه است.
# create a dictionary
courses = {
"C001":"Algorithm",
"C002":"Data Structure",
"C003":"Programming in Python",
}
# retrieve all items
# "k" represents item's key
# "v" represents item's value
for k, v in courses.items():
print(k,v)
خروجی
C001 Algorithm
C002 Data Structure
C003 Programming in Python
عملیات پایه دیکشنری
برای درج یک مورد جدید در یک فرهنگ لغت، جفت کلید-مقدار مورد را مشخص کنید. مطمئن شوید که کلید منحصر به فرد است.
map_name['key'] = value
این نمونه ای از درج یک مورد جدید در فرهنگ لغت است.
# create an empty dictionary
courses = {}
# insert courses
courses['C001'] = 'Algorithm'
courses['C002'] = 'Data Engineer'
courses['C003'] = 'Data Science'
# retrieve all courses
for k, v in courses.items():
print(k,v)
خروجی
C001 Algorithm
C002 Data Engineer
C003 Data Science
برای به روز رسانی یک مورد در فرهنگ لغت، کلید مورد را مشخص کنید و سپس مقدار به روز شده را وارد کنید.
courses = {
"C001":"Algorithm",
"C002":"Data Engineer",
"C003":"Data Science",
}
print(f"before update: {courses['C002']}")
# update course with key equals to C002
courses['C002'] = "Data Analyst"
print(f"after update: {courses['C002']}")
خروجی
before update: Data Engineer
after update: Data Analyst
کلیدها و مقادیر موجود در فرهنگ لغت را می توان به طور مستقل با استفاده از روش های مختلف در دسترس قرار داد.
courses = {
"C001":"Algorithm",
"C002":"Data Engineer",
"C003":"Data Science",
}
# retrieve keys
course_keys = courses.keys()
print(f"keys: {course_keys}")
# retrieve values
course_values = courses.values()
print(f"values: {course_values}")
خروجی
keys: dict_keys(['C001', 'C002', 'C003'])
values: dict_values(['Algorithm', 'Data Engineer', 'Data Science'])
این pop()
متد بر اساس کلید داده شده مورد را از فرهنگ لغت حذف می کند.
courses = {
"C001":"Algorithm",
"C002":"Data Engineer",
"C003":"Data Science",
}
# remove course with key equals to C003
courses.pop('C003')
for k, v in courses.items():
print(k,v)
خروجی
C001 Algorithm
C002 Data Engineer
این clear()
روش تمام موارد داخل فرهنگ لغت را حذف می کند.
courses = {
"C001":"Algorithm",
"C002":"Data Engineer",
"C003":"Data Science",
}
# remove all items
courses.clear()
# check if the dictionary is empty
is_empty = len(courses.values()) == 0
print(is_empty)
خروجی
True
چندتایی
تاپل یک ساختار داده تغییرناپذیر برای ذخیره مقادیر زیادی است. تاپل ممکن است حاوی مقادیر قابل تغییر باشد. دو راه برای ایجاد یک تاپل جدید وجود دارد.
- یک تاپل با مقادیر اختصاص داده شده ایجاد کنید.
# create a tuple with assigned values
fruits = ("apple","banana","mango")
# retrieve all values
for f in fruits:
print(f)
خروجی
apple
banana
mango
- یک تاپل خالی ایجاد کنید.
# create an empty tuple
fruits = ()
عملیات پایه تاپل
یک تاپل تغییرناپذیر است، به این معنی که مقادیر آن را نمیتوان پس از ایجاد تغییر یا بهروزرسانی کرد.
# create a tuple with assigned values
fruits = ("apple","banana","mango")
# error, tuple is immutable
fruits[0] = "starfruit"
مقادیر تاپل را میتوان با استفاده از «باز کردن بستهبندی چندگانه» بازیابی کرد (این مفهوم مشابه ساختارشکنی شی در جاوا اسکریپت است).
هنگام باز کردن بسته بندی، اندازه مقادیر بسته بندی نشده باید با اندازه تاپل برابر باشد.
# create a tuple with assigned values
fruits = ("apple","banana","mango")
# tuple unpacking
(one, two, three) = fruits
print(one,two,three)
خروجی
apple banana mango
تنظیم کنید
مجموعه یک ساختار داده نامرتب است که فقط شامل موارد منحصر به فرد است. راه های زیادی برای ایجاد یک مجموعه وجود دارد.
# create a set with assigned values
data = {1,2,3,4}
# create a set with set() function
records = set(['milk','coffee','juice'])
مجموعه خالی را می توان با استفاده از set()
تابع
empty_set = set()
ساختار داده مجموعه مقادیر تکراری را به طور خودکار حذف می کند.
# create a set with assigned values
data = {1,1,1,2,2,2,3,3,4,5,4}
for d in data:
print(d)
خروجی
1
2
3
4
5
مقادیر داخل مجموعه را می توان با استفاده از for
حلقه
# create a set with assigned values
data = {1,2,3,4}
for d in data:
print(d)
خروجی
1
2
3
4
تنظیم عملیات پایه
ساختار داده مجموعه عملیات های زیادی مانند اتحاد، تقاطع، تفاوت و تفاوت متقارن را ارائه می دهد.
عملیات اتحاد همه موارد را در هر دو مجموعه برمی گرداند.
data1 = {'burger','kebab','noodle','pasta','pizza'}
data2 = {'burger','french fries','pasta','cereal','biscuit'}
result = data1 | data2
print(result)
خروجی
{'burger', 'cereal', 'french fries', 'noodle', 'kebab', 'pizza', 'pasta', 'biscuit'}
عملیات تقاطع تمام موارد موجود در تقاطع مجموعه ها را برمی گرداند.
data1 = {'burger','kebab','noodle','pasta','pizza'}
data2 = {'burger','french fries','pasta','cereal','biscuit'}
result = data1 & data2
print(result)
خروجی
{'burger', 'pasta'}
عملیات تفاوت همه مواردی را که فقط در یک مجموعه خاص وجود دارند برمی گرداند.
data1 = {'burger','kebab','noodle','pasta','pizza'}
data2 = {'burger','french fries','pasta','cereal','biscuit'}
result = data1 - data2 # items in data1 but no in data2
print(result)
خروجی
{'pizza', 'kebab', 'noodle'}
عملیات تفاضل متقارن تمام مواردی را که در هر یک از مجموعه ها وجود دارد، اما در تقاطع وجود ندارد، برمی گرداند.
data1 = {'burger','kebab','noodle','pasta','pizza'}
data2 = {'burger','french fries','pasta','cereal','biscuit'}
result = data1 ^ data2 # items in data1 or data2 but not both
print(result)
خروجی
{'biscuit', 'kebab', 'cereal', 'pizza', 'noodle', 'french fries'}
مقدمه ای بر تابع
این تابع یک واحد قابل فراخوانی است که حاوی دستورالعملهایی است که هدف آن کاهش تکرار کد و سازماندهی وظایف پیچیده است. دو نوع وجود دارد: توابع void (بدون مقدار بازگشتی) و آنهایی که یک مقدار را برمی گردانند.
این ساختار اصلی تابع در پایتون است.
def function_name(args):
function body
این مثال تابع void (بدون مقدار بازگشتی) در پایتون است.
# create a function
def hello():
print("hello!")
# call the function
hello()
خروجی
hello!
بر اساس کد بالا، تابع فراخوانی شده است hello()
ایجاد می شود. تابع با تعیین نام تابع به دنبال پرانتز فراخوانی می شود ()
.
این مثال تابع با مقدار بازگشتی است.
# create a function with return value
def add(a,b):
return a + b
result = add(2,4)
print(result)
خروجی
6
بر اساس کد بالا، تابع فراخوانی شده است add()
برای جمع دو عدد ایجاد می شود. مقدار بازگشتی از add()
تابع در داخل ذخیره می شود result
متغیر
هنگام کار با تابع مقدار بازگشتی، مطمئن شوید که از مقدار برگشتی استفاده می شود.
مبحث توابع در پایتون در فصلی جداگانه به تفصیل توضیح داده خواهد شد.
مثال – برنامه ساده Todo List
بیایید یک برنامه لیست کار ساده ایجاد کنیم. این برنامه از لیست به عنوان ذخیره سازی برای کارها استفاده می کند و از تابع برای کد پاک کننده استفاده می کند.
اولین قدم واردات است uuid
بسته و لیستی به نام ایجاد کنید todos
برای ذخیره سوابق todo این uuid
بسته به عنوان شناسه (ID) برای رکورد todo استفاده می شود.
import uuid
# create a local storage for storing todos
todos = []
پس از آن، یک را ایجاد کنید view_todos()
تابعی برای بازیابی تمام رکوردهای TODO. تمام رکوردهای TODO با استفاده از آن بازیابی می شوند for
حلقه
def view_todos():
"""
view all todos
"""
print("all todos")
for todo in todos:
print("====")
print(f"id: {todo["id"]}")
print(f"title: {todo["title"]}")
print("====")
ایجاد یک view_todo()
تابع برای بازیابی رکورد TODO با شناسه مشخص شده. هر رکورد TODO در داخل بررسی می شود for
حلقه برای بررسی اینکه آیا ID فعلی todo برابر با شناسه مشخص شده است یا خیر. اگر مطابقت داشته باشد، رکورد انجام کار نمایش داده می شود.
def view_todo(todo_id):
"""
view todo by ID
"""
for todo in todos:
if todo["id"] == todo_id:
print("====")
print(f"id: {todo["id"]}")
print(f"title: {todo["title"]}")
print("====")
ایجاد یک create_todo()
عملکرد ایجاد یک todo جدید. رکورد todo به عنوان یک فرهنگ لغت با نشان داده می شود id
و title
زمینه
def create_todo(todo_input):
"""
create a new todo
"""
new_todo = {
"id":uuid.uuid4().hex,
"title":todo_input
}
todos.append(new_todo)
print("todo added!")
ایجاد یک update_todo()
عملکرد به روز رسانی یک TODO. در این تابع، رکورد todo توسط ID مشخص شده به روز می شود.
def update_todo(todo_id,todo_input):
"""
update existing todo
"""
for todo in todos:
if todo["id"] == todo_id:
todo["title"] = todo_input
print("todo updated!")
ایجاد یک delete_todo()
تابع حذف یک کار در این تابع، رکورد todo توسط ID مشخص شده حذف می شود.
def delete_todo(todo_id):
"""
delete todo
"""
for todo in todos:
if todo["id"] == todo_id:
todos.remove(todo)
print("todo deleted!")
در نهایت یک تابع به نام ایجاد کنید display_menu()
برای نمایش منوی اصلی برنامه
def display_menu():
"""
displays the main menu of the application
"""
# create a variable for storing user's choice
choice = 0
while choice != 6:
print("Simple Todo App")
print("1. view all todos")
print("2. view todo by ID")
print("3. create a new todo")
print("4. update todo")
print("5. delete todo")
print("6. exit")
print("---------------")
choice = int(input("insert choice: "))
match choice:
case 1:
view_todos()
case 2:
todo_id = input("insert todo ID: ")
view_todo(todo_id)
case 3:
todo_input = input("insert new todo: ")
create_todo(todo_input)
case 4:
todo_id = input("insert todo ID: ")
todo_input = input("insert updated todo: ")
update_todo(todo_id,todo_input)
case 5:
todo_id = input("insert todo ID: ")
delete_todo(todo_id)
case 6:
print("good bye")
case _:
print("invalid choice, please input 1-6")
# call the function
display_menu()
این کد کامل است.
import uuid
# create a local storage for storing todos
todos = []
def view_todos():
"""
view all todos
"""
print("all todos")
for todo in todos:
print("====")
print(f"id: {todo["id"]}")
print(f"title: {todo["title"]}")
print("====")
def view_todo(todo_id):
"""
view todo by ID
"""
for todo in todos:
if todo["id"] == todo_id:
print("====")
print(f"id: {todo["id"]}")
print(f"title: {todo["title"]}")
print("====")
def create_todo(todo_input):
"""
create a new todo
"""
new_todo = {
"id":uuid.uuid4().hex,
"title":todo_input
}
todos.append(new_todo)
print("todo added!")
def update_todo(todo_id,todo_input):
"""
update existing todo
"""
for todo in todos:
if todo["id"] == todo_id:
todo["title"] = todo_input
print("todo updated!")
def delete_todo(todo_id):
"""
delete todo
"""
for todo in todos:
if todo["id"] == todo_id:
todos.remove(todo)
print("todo deleted!")
def display_menu():
"""
displays the main menu of the application
"""
# create a variable for storing user's choice
choice = 0
while choice != 6:
print("Simple Todo App")
print("1. view all todos")
print("2. view todo by ID")
print("3. create a new todo")
print("4. update todo")
print("5. delete todo")
print("6. exit")
print("---------------")
choice = int(input("insert choice: "))
match choice:
case 1:
view_todos()
case 2:
todo_id = input("insert todo ID: ")
view_todo(todo_id)
case 3:
todo_input = input("insert new todo: ")
create_todo(todo_input)
case 4:
todo_id = input("insert todo ID: ")
todo_input = input("insert updated todo: ")
update_todo(todo_id,todo_input)
case 5:
todo_id = input("insert todo ID: ")
delete_todo(todo_id)
case 6:
print("good bye")
case _:
print("invalid choice, please input 1-6")
# call the function
display_menu()
این خروجی برنامه است.
منابع
امیدوارم این مقاله به شما در یادگیری پایتون کمک کند. اگر بازخوردی دارید، لطفا در قسمت نظرات به من بگویید.