لیست مطالب

تمرین لیست ها در پایتون

تمرین ۱: بررسی خالی بودن لیست

برنامه‌ای بنویسید که یک رشته از کاربر گرفته، آن را به لیست تبدیل کند و بررسی کند لیست خالی است یا نه.

ورودی: apple,banana یا خالی
خروجی: The list is empty. یا The list is not empty.

				
					items = input("Enter a list of items (comma separated): ").split(',')

if len(items) == 1 and items[0] == ' ':

        print("The list is empty.")

else:

        print("The list is not empty.")
				
			

متد (‘,’)split رشته را بر اساس کاما به لیست تبدیل می‌کند. اگر کاربر هیچ چیزی وارد نکند، نتیجه [”] می‌شود؛ پس برای بررسی خالی‌بودن واقعی، بررسی می‌کنیم آیا تنها عنصر موجود یک رشته خالی است یا نه. تابع len() برای بررسی تعداد آیتم‌ها استفاده شده .
split متدی است که string را به یک لیست تبدیل می کند.

تمرین ۲: شمارش تعداد عناصر

برنامه‌ای بنویسید که لیستی از آیتم‌ها را دریافت کرده و تعداد آن‌ها را چاپ کند.
				
					items = input("Enter your list (comma separated): ").split(',')

print("Number of items:", len(items))
				
			
با استفاده از (‘,’)split لیست ساخته می‌شود. سپس تابع len() برای شمارش آیتم‌ها در لیست استفاده می‌شود. len تعداد کل عناصر موجود در لیست را بازمی‌گرداند.

تمرین ۳: بررسی وجود یک مقدار خاص

برنامه‌ای بنویسید که یک لیست و یک مقدار از کاربر بگیرد و بررسی کند که آیا آن مقدار در لیست وجود دارد یا نه.
				
					items = input("Enter list: ").split(',')

target = input("Enter item to search: ")

if target in items:

        print("Item found.")

else:

        print("Item not found.")
				
			
عبارت target in items بررسی می‌کند که آیا مقدار هدف در لیست وجود دارد یا خیر. این روش سریع و ساده برای جست‌وجوی عضویت در لیست است.

 تمرین ۴: ساخت لیست با input و چاپ آیتم‌ها

برنامه‌ای بنویسید که ۵ مقدار از کاربر بگیرد و آن‌ها را به صورت لیست نمایش دهد.

				
					items = []

for i in range(5):

item = input("Enter an item: ")

items.append(item)

print("Your list:", items)
				
			

ابتدا یک لیست خالی ایجاد می‌کنیم و در یک حلقه ۵ بار از کاربر مقدار می‌گیریم. با append() مقدار هر بار به انتهای لیست افزوده می‌شود. در نهایت، کل لیست را با print() نمایش می‌دهیم.

 تمرین ۵: نمایش آیتم اول و آخر لیست

برنامه‌ای بنویسید که چند آیتم از کاربر بگیرد و اولین و آخرین آیتم را نمایش دهد.
				
					
items = []
for i in range(4):
    items.append(input("Enter item: "))

print("First item:", items[0])
print("Last item:", items[-1])

				
			
اندیس‌ها در پایتون از صفر شروع می‌شوند، بنابراین items[0] آیتم اول را می‌دهد و items[-1] همیشه آخرین آیتم لیست را برمی‌گرداند.

تمرین ۶: شمارش آیتم خاص

برنامه‌ای بنویسید که از کاربر یک لیست و سپس آیتمی خاص بگیرد و بگوید چند بار در لیست آمده است.

				
					#روش اول
items = []
n = int(input("How many items do you want to enter? "))

for i in range(n):
        element = input("Enter item " + str(i+1) + ": ")
        items.append(element)

search_item = input("Enter the item to count: ")

count = 0
for item in items:
        if item == search_item:
            count += 1

print("The item", search_item, "appears", count, "times in the list.")


#روش دوم

items = []
for i in range(6):
    items.append(input("Enter item: "))

target = input("Enter item to count: ")
print("Count:", items.count(target))



				
			

اول از کاربر تعداد آیتم‌ها را می‌پرسیم.سپس با حلقه , لیست را می‌سازیم.بعد آیتمی را که باید شمارش شود از کاربر می‌گیریم.با یک حلقه دیگر لیست را بررسی می‌کنیم و هرجا آیتم موردنظر پیدا شد، شمارنده را یک واحد زیاد می‌کنیم.در آخر تعداد تکرار را چاپ می‌کنیم.

روش دوم:
متد count تعداد دفعاتی را که مقدار x در لیست آمده است، برمی‌گرداند. این روش ساده و مستقیم برای شمارش است.

تمرین ۷: افزودن آیتم جدید به لیست

برنامه‌ای بنویسید که چند مقدار از کاربر بگیرد و سپس آیتم جدیدی به لیست اضافه کند.
				
					items = []

for i in range(3):

        items.append(input("Enter item: "))

new_item = input("Enter item to add: ")

items.append(new_item)

print("Updated list:", items)
				
			
بعد از گرفتن لیست اولیه، از append() برای افزودن مقدار جدید استفاده می‌کنیم. این متد مقدار را در انتهای لیست اضافه می‌کند.

تمرین ۸: حذف یک مقدار خاص از لیست

برنامه‌ای بنویسید که از کاربر یک لیست و آیتمی برای حذف بگیرد. اگر آیتم در لیست بود، آن را حذف کند.
				
					
names = ["Ali", "Reza", "Zahra"]
name_to_remove = "Reza"
# ساخت لیست جدید بدون نام مورد نظر
filtered_names = []
for name in names:
    if name != name_to_remove:
        filtered_names = filtered_names + [name]
print("Updated list:", filtered_names)


				
			
برای حذف یک مقدار، با یک حلقه تمام عناصر را پیمایش می‌کنیم و تنها عناصری که برابر نام مورد نظر نیستند را به لیست جدید اضافه می‌کنیم. بدین صورت، تمام occurrences از نام “Reza” فیلتر شده و از لیست حاصل حذف می‌شوند. استفاده از این روش ما را از به‌کارگیری remove() بی‌نیاز می‌کند.

تمرین ۹: پیدا کردن بزرگ‌ترین عدد

برنامه‌ای بنویسید که چند عدد از کاربر بگیرد و بزرگ‌ترین عدد را نمایش دهد.

				
					#روش اول

numbers = []
n = int(input("How many numbers do you want to enter? "))

for i in range(n):
    num = float(input("Enter number " + str(i+1) + ": "))
    numbers.append(num)

largest = numbers[0]

for num in numbers:
    if num > largest:
        largest = num

print("The largest number is:", largest)



#روش دوم
numbers = []

for i in range(6):

        n = int(input("Enter number: "))

        numbers.append(n)

print("Max value:", max(numbers))
				
			

روش اول:
ابتدا تعداد اعداد را از کاربر می‌گیریم.با حلقه، اعداد را از کاربر گرفته و در لیست ذخیره می‌کنیم.فرض می‌کنیم اولین عدد بزرگ‌ترین است.سپس بقیه اعداد را بررسی می‌کنیم. اگر عددی بزرگ‌تر بود، آن را جایگزین می‌کنیم.در پایان بزرگ‌ترین عدد چاپ می‌شود.

روش دوم:

تابع max به صورت پیش‌فرض روی لیست از اعداد کار می‌کند و بیشترین مقدار را برمی‌گرداند. قبل از آن باید ورودی‌ها را با int() به عدد تبدیل کنیم.

تمرین ۱۰: مجموع عناصر لیست

برنامه‌ای بنویسید که چند عدد از کاربر بگیرد و مجموع آن‌ها را نمایش دهد.

				
					n = int(input("How many numbers do you want to enter? "))

total = 0

for i in range(n):
        num = float(input("Enter number " + str(i+1) + ": "))
        total += num

print("The total sum is:", total)

				
			

از کاربر می‌پرسیم چند عدد می‌خواهد وارد کند و در n ذخیره می شود . متغیر به نام total تعریف می‌کنیم که از صفر شروع می‌شود.

با استفاده از حلقه for، n بار عدد از کاربر می‌گیریم و هر عدد را به total اضافه می‌کنیم.

در پایان، مقدار نهایی مجموع (total) را چاپ می‌کنیم.

تمرین ۱۱: ترکیب دو لیست

 دو کلاس دانش‌آموز دارید که اسامی دانش‌آموزان هر کلاس در یک لیست جداگانه قرار دارد. برنامه‌ای بنویسید که این دو لیست را با هم ترکیب کند و یک لیست واحد شامل تمام دانش‌آموزان هر دو کلاس بسازد. به عنوان مثال ترکیب دو لیست class1 = [“Ali”, “Reza”] و class2 = [“Zahra”, “Hassan”] باید نتیجه [“Ali”, “Reza”, “Zahra”, “Hassan”] را بدهد.

				
					class1 = ["Ali", "Reza"]

class2 = ["Zahra", "Hassan"]

combined = class1 + class2

print("Combined list:", combined)
				
			

برای ترکیب دو لیست، ساده‌ترین روش استفاده از عملگر + است. در این کد لیست class1 و class2 با هم جمع (الحاق) شده و لیست جدید combined شامل تمام عناصر هر دو لیست می‌شود. (روش‌های دیگری مانند extend() یا unpacking نیز برای ترکیب لیست‌ها وجود دارد، اما اینجا از آن‌ها استفاده نشده است.)

تمرین ۱۲: محاسبه مجموع و میانگین اعداد

لیستی از اعداد مربوط به فروش روزانه یک فروشگاه در طول هفته گذشته را دارید. برنامه‌ای بنویسید که مجموع فروش و همچنین میانگین فروش روزانه را محاسبه و چاپ کند. برای مثال با لیست فروش هفتگی sales = [120, 85, 90, 100, 75, 95, 110] خروجی باید مجموع (مثلاً 675) و میانگین (مثلاً 96.42) را نمایش دهد.

				
					sales = [120, 85, 90, 100, 75, 95, 110]

total = 0

count = 0

for amount in sales:

        total += amount

        count += 1

average = total / count

print("Total sales:", total)

print("Average sales:", average)
				
			

در این کد با پیمایش لیست sales مجموع اعداد در متغیر total و تعداد اقلام در متغیر count محاسبه می‌شود. سپس با تقسیم مجموع بر تعداد، میانگین به‌دست می‌آید. (تابع‌های داخلی Python مانند sum() و len() نیز می‌توانند برای مجموع و طول لیست به کار روند، اما در اینجا برای آموزش از حلقه و متغیر کمکی استفاده شده است.)

تمرین ۱۳: محاسبه حاصل‌ضرب عناصر لیست

یک لیست از اعداد صحیح مثبت دارید. برنامه‌ای بنویسید که حاصل‌ضرب تمام اعداد موجود در لیست را محاسبه کند. برای مثال اگر numbers = [2, 3, 4] باشد، حاصل‌ضرب ۲×۳×۴ برابر ۲۴ باید محاسبه و چاپ شود.

				
					numbers = [2, 3, 4]

product = 1

for num in numbers:

        product = product * num

print("Product:", product)
				
			

برای به‌دست‌آوردن حاصل‌ضرب عناصر، ابتدا متغیر product را روی ۱ مقداردهی اولیه می‌کنیم. سپس در هر تکرار حلقه مقدار فعلی درون لیست را در product ضرب می‌کنیم. پس از پایان حلقه، متغیر product شامل حاصل‌ضرب تمامی اعداد لیست خواهد بود.

تمرین ۱۴: مجذور کردن اعداد یک لیست

فرض کنید لیستی از اعداد نمایانگر طول اضلاع چند مربع دارید. برنامه‌ای بنویسید که یک لیست جدید بسازد که در آن هر عدد برابر مساحت مربع مربوطه باشد (مجذور عدد اصلی). برای نمونه، از لیست side_lengths = [1, 2, 3, 4] باید لیست [1, 4, 9, 16] به‌عنوان خروجی (طول اضلاع به توان ۲) تولید شود.

				
					side_lengths = [1, 2, 3, 4]

areas = []

for length in side_lengths:

        square = length * length

        areas = areas + [square]

print("Areas:", areas)
				
			

برنامه با یک حلقه روی لیست side_lengths هر مقدار را خوانده و مجذور آن را محاسبه می‌کند. سپس با روش الحاق لیست، نتیجه به لیست جدید areas افزوده می‌شود. در پایان لیست areas شامل مربعات تمامی اعداد ورودی است.

تمرین ۱۵: یافتن حداقل و حداکثر

لیستی از دمای هوا در طول هفته (به درجه سانتی‌گراد) دارید. برنامه‌ای بنویسید که بالاترین دما و پایین‌ترین دما را از این لیست پیدا کرده و نمایش دهد. برای مثال اگر temps = [19, 22, 21, 18, 26, 24, 20] باشد باید خروجی به صورت «بالاترین دما ۲۶ و پایین‌ترین دما ۱۸ است.» نمایش داده شود.

				
					
temps = [19, 22, 21, 18, 26, 24, 20]

max_temp = temps[0]

min_temp = temps[0]

for t in temps:

        if t > max_temp:

            max_temp = t

        if t < min_temp:

            min_temp = t

print("Max temp:", max_temp)

print("Min temp:", min_temp)
				
			

در ابتدا هر دو متغیر max_temp و min_temp را با اولین عنصر لیست مقداردهی می‌کنیم. سپس با پیمایش لیست، هر عنصر را با این متغیرها مقایسه کرده و در صورت بزرگ‌تر بودن، مقدار max_temp را به‌روزرسانی می‌کنیم و در صورت کوچک‌تر بودن، مقدار min_temp را تغییر می‌دهیم. پس از پایان حلقه، این دو متغیر به ترتیب حداکثر و حداقل مقدار لیست را در بر دارند.

تمرین ۱۶: شمارش تعداد تکرار یک عنصر

برنامه‌ای بنویسید که تعداد دفعات وقوع یک عنصر مشخص را در یک لیست بشمارد. به عنوان مثال، برای لیست fruits = [“apple”, “banana”, “apple”, “cherry”, “apple”] اگر به دنبال کلمه “apple” باشیم، باید عدد ۳ (تعداد دفعات تکرار “apple”) در خروجی چاپ شود بدون استفاده از متد count.

				
					fruits = ["apple", "banana", "apple", "cherry", "apple"]

target = "apple"

count = 0

for item in fruits:

        if item == target:

            count += 1

print(f"'{target}' appears {count} times.")
				
			

برای شمارش تکرار یک مقدار، در هر دور حلقه بررسی می‌کنیم که آیا عنصر جاری برابر مقدار مورد جستجو (target) هست یا نه. هر بار که شرط برقرار باشد، شمارنده یک واحد افزایش می‌یابد. در پایان مقدار count بیانگر تعداد دفعات حضور مقدار دلخواه در لیست است (معادل استفاده از متد count، که اینجا به صورت دستی پیاده‌سازی شده است).

تمرین ۱۶: شمارش تعداد تکرار یک عنصر

برنامه‌ای بنویسید که تعداد دفعات وقوع یک عنصر مشخص را در یک لیست بشمارد. به عنوان مثال، برای لیست fruits = [“apple”, “banana”, “apple”, “cherry”, “apple”] اگر به دنبال کلمه “apple” باشیم، باید عدد ۳ (تعداد دفعات تکرار “apple”) در خروجی چاپ شود بدون استفاده از متد count.

				
					fruits = ["apple", "banana", "apple", "cherry", "apple"]

target = "apple"

count = 0

for item in fruits:

        if item == target:

            count += 1

print(f"'{target}' appears {count} times.")
				
			

برای شمارش تکرار یک مقدار، در هر دور حلقه بررسی می‌کنیم که آیا عنصر جاری برابر مقدار مورد جستجو (target) هست یا نه. هر بار که شرط برقرار باشد، شمارنده یک واحد افزایش می‌یابد. در پایان مقدار count بیانگر تعداد دفعات حضور مقدار دلخواه در لیست است (معادل استفاده از متد count، که اینجا به صورت دستی پیاده‌سازی شده است).

تمرین ۱۷: شمارش موارد واجد شرط (زوج و فرد)

یک لیست شامل اعداد صحیح دارید. برنامه‌ای بنویسید که تعداد اعداد زوج و تعداد اعداد فرد موجود در لیست را محاسبه کرده و اعلام کند. برای مثال در لیست numbers = [5, 8, 13, 6, 4, 7] برنامه باید چاپ کند که ۳ عدد زوج و ۳ عدد فرد وجود دارد.

				
					numbers = [5, 8, 13, 6, 4, 7]

even_count = 0

odd_count = 0

for num in numbers:

        if num % 2 == 0:

            even_count += 1

        else:

            odd_count += 1

print("Even numbers:", even_count)

print("Odd numbers:", odd_count)
				
			

باقیمانده‌ی تقسیم هر عدد بر ۲ را محاسبه می‌کنیم. اگر باقیمانده ۰ باشد عدد زوج است و شمارنده‌ی even_count یک واحد افزایش می‌یابد، در غیر این صورت عدد فرد است و odd_count افزایش می‌یابد. بدین ترتیب در انتها دو متغیر مذکور تعداد عناصر زوج و فرد لیست را در خود نگه می‌دارند.

تمرین ۱۸: فیلتر کردن بر اساس شرط

یک لیست از نمرات دانش‌آموزان دارید. برنامه‌ای بنویسید که نمرات بالای ۱۵ را جدا کرده و در یک لیست جدید ذخیره کند. برای مثال با ورودی scores = [10, 18, 14, 20, 16] باید لیست جدیدی به شکل [18, 20, 16] شامل نمرات بیشتر از ۱۵ ساخته و نمایش داده شود.

				
					scores = [10, 18, 14, 20, 16]

high_scores = []

for s in scores:

        if s > 15:

            high_scores = high_scores + [s]

print("High scores:", high_scores)
				
			

در این حل با استفاده از یک حلقه‌ی for و یک شرط if بررسی می‌کنیم کدام نمرات بزرگ‌تر از ۱۵ هستند. هر نمره واجد شرط توسط عملگر + به لیست high_scores اضافه می‌شود. نتیجه‌ی نهایی لیست جدیدی است که تنها مقادیر فیلترشده (نمرات بیش از ۱۵) را در خود دارد.

تمرین ۱۹: جایگزینی مقادیر بر اساس شرط

فرض کنید لیستی از نمرات دارید و می‌خواهید تمامی نمرات زیر ۱۰ را با مقدار ۱۰ جایگزین کنید (مثلاً برای لیست [8, 15, 6, 12] خروجی باید [10, 15, 10, 12] شود تا نمرات خیلی پایین به ۱۰ ارتقا یابند). برنامه‌ای بنویسید که این جایگزینی را در همان لیست انجام دهد.

				
					grades = [8, 15, 6, 12]

for i in range(len(grades)):

        if grades[i] < 10:

            grades[i] = 10

print("Adjusted grades:", grades)
				
			

در این برنامه به کمک تابع range(len(list)) بر روی اندیس‌های لیست حرکت می‌کنیم. هرگاه عنصری یافت شود که کمتر از ۱۰ باشد، مقدار آن خانه از لیست را به ۱۰ تغییر می‌دهیم. به این ترتیب لیست اصلی پس از اجرای حلقه به‌روز شده و تمامی مقدارهای کمتر از ۱۰ با ۱۰ جایگزین شده‌اند.

تمرین ۱۹: جایگزینی مقادیر بر اساس شرط

فرض کنید لیستی از نمرات دارید و می‌خواهید تمامی نمرات زیر ۱۰ را با مقدار ۱۰ جایگزین کنید (مثلاً برای لیست [8, 15, 6, 12] خروجی باید [10, 15, 10, 12] شود تا نمرات خیلی پایین به ۱۰ ارتقا یابند). برنامه‌ای بنویسید که این جایگزینی را در همان لیست انجام دهد.

				
					grades = [8, 15, 6, 12]

for i in range(len(grades)):

        if grades[i] < 10:

            grades[i] = 10

print("Adjusted grades:", grades)
				
			

در این برنامه به کمک تابع range(len(list)) بر روی اندیس‌های لیست حرکت می‌کنیم. هرگاه عنصری یافت شود که کمتر از ۱۰ باشد، مقدار آن خانه از لیست را به ۱۰ تغییر می‌دهیم. به این ترتیب لیست اصلی پس از اجرای حلقه به‌روز شده و تمامی مقدارهای کمتر از ۱۰ با ۱۰ جایگزین شده‌اند.

تمرین ۲۰: بررسی وجود شرط در لیست (مثال عدد منفی)

یک لیست از اعداد صحیح (مثبت و منفی) دارید. برنامه‌ای بنویسید که بررسی کند آیا هیچ عدد منفی در لیست وجود دارد یا خیر. اگر حداقل یک عدد منفی یافت شد، پیام مناسبی چاپ کند. برای مثال با ورودی nums = [4, -2, 7, 5] باید شناسایی شود که مقدار -2 منفی است و پیغام هشدار (مثلاً “لیست شامل عدد منفی است”) نمایش داده شود.

				
					nums = [4, -2, 7, 5]

found_negative = False

for n in nums:

        if n < 0:

            found_negative = True

            break

if found_negative:

        print("There is a negative number in the list.")

else:

        print("All numbers are non-negative.")
				
			

این برنامه با یک متغیر (found_negative) وجود هر عدد منفی را ردیابی می‌کند. در حین پیمایش لیست، به محض برخورد با اولین مقدار منفی، found_negative را True کرده و با break از حلقه خارج می‌شویم. سپس براساس True/False بودن found_negative، پیام مناسبی چاپ می‌شود.

found_negative  یک متغیر هست.میتواند هر چیزی نام گذاری باشد.

تمرین ۲۱: حذف موارد تکراری (حذف duplicateها)

 فرض کنید لیستی شامل شناسه‌های ثبت‌نام بوده و برخی از آن‌ها تکراری هستند. برنامه‌ای بنویسید که مقادیر تکراری را حذف کرده و یک لیست فقط با عناصر یکتا برگرداند. برای مثال با ورودی ids = [3, 5, 3, 2, 5, 7] باید خروجی [3, 5, 2, 7] (شامل هر عدد فقط یک بار) به‌دست آید.

				
					ids = [3, 5, 3, 2, 5, 7]

unique_ids = []

for val in ids:

        if val not in unique_ids:

            unique_ids = unique_ids + [val]

print("Unique IDs:", unique_ids)
				
			

برای حذف المان‌های تکراری و حفظ ترتیب اصلی، از یک لیست کمکی unique_ids استفاده می‌کنیم. در هر دور حلقه اگر عنصری تاکنون به لیست جدید اضافه نشده باشد (val not in unique_ids)، آن را اضافه می‌کنیم. در پایان، unique_ids حاوی تمام عناصر ورودی بدون هیچ تکراری خواهد بود.

تمرین ۲۲: یافتن عناصر مشترک دو لیست

دو لیست از اسامی دانشجویان دارید (مثلاً دانشجویان ثبت‌نامی و دانشجویان حاضر در کلاس). برنامه‌ای بنویسید که اسامی مشترک بین این دو لیست را پیدا کرده و در قالب یک لیست جدید نمایش دهد. برای مثال اگر list_a = [“Ali”, “Zahra”, “Mina”] و list_b = [“Mina”, “Hassan”, “Zahra”] باشند، خروجی باید لیست [“Zahra”, “Mina”] (اسامی که در هر دو لیست وجود دارند) باشد.

				
					list_a = ["Ali", "Zahra", "Mina"]

list_b = ["Mina", "Hassan", "Zahra"]

common = []

for name in list_a:

        if name in list_b:

            common = common + [name]

print("Common names:", common)
				
			

به ازای هر عنصر از list_a بررسی می‌کنیم که آیا در list_b نیز وجود دارد یا خیر. در صورت وجود، آن عنصر را به لیست نتیجه common اضافه می‌کنیم. در پایان لیست common شامل عناصر مشترک خواهد بود. (روش استفاده از عملگر عضویت in در اینجا کار را ساده کرده است و معادل یک حلقه تو در تو برای یافتن اشتراک‌ها است.)

تمرین ۲۳: عناصر متفاوت دو لیست

دو لیست completed_tasks (کارهای انجام‌شده) و all_tasks (تمام کارهای برنامه‌ریزی‌شده) را در نظر بگیرید. برنامه‌ای بنویسید که کارهای انجام‌نشده را مشخص کند؛ به این صورت که مواردی از all_tasks که در completed_tasks نیستند را در یک لیست جدید نمایش دهد. مثلاً اگر all_tasks = [“task1”, “task2”, “task3”] و completed_tasks = [“task2”] باشد، خروجی باید [“task1”, “task3”] را نشان دهد.

				
					all_tasks = ["task1", "task2", "task3"]

completed_tasks = ["task2"]

remaining = []

for task in all_tasks:

        if task not in completed_tasks:

            remaining = remaining + [task]

print("Remaining tasks:", remaining)
				
			

برای به‌دست‌آوردن لیست کارهای انجام‌نشده، روی all_tasks پیمایش می‌کنیم و هر کاری را که در لیست completed_tasks وجود نداشته باشد به لیست remaining اضافه می‌کنیم. در انتها remaining شامل تمام کارهایی خواهد بود که انجام نشده‌اند.

تمرین ۲۴: معکوس کردن ترتیب لیست

برنامه‌ای بنویسید که ترتیب عناصر یک لیست را معکوس کند بدون استفاده از متد reverse. برای مثال با ورودی nums = [1, 2, 3, 4, 5] خروجی باید [5, 4, 3, 2, 1] باشد.

				
					nums = [1, 2, 3, 4, 5]

n = len(nums)

for i in range(n // 2):

        # جابجا کردن عنصر iام با عنصر قرینه‌اش از انتها

        temp = nums[i]

        nums[i] = nums[n - 1 - i]

        nums[n - 1 - i] = temp

print("Reversed list:", nums)
				
			

این الگوریتم با استفاده از دو اندیس از ابتدا و انتهای لیست، عناصر را جابجا می‌کند تا ترتیب لیست معکوس شود. به ازای هر تکرار iام، مقدار در اندیس i با مقدار متناظر از انتهای لیست (n-1-i) سوئیچ می‌شود تا در پایان لیست برعکس گردد. (روش ساده‌تر در Python استفاده از برش nums[::-1] است اما در اینجا به صورت دستی با حلقه swap انجام شده است.)

تمرین ۲۵: یافتن دومین مقدار بزرگ‌تر

 لیستی از امتیازات بازی‌کنان دارید و می‌خواهید دومین امتیاز بالاتر را بیابید. برنامه‌ای بنویسید که بدون استفاده از متدهای آماده مانند sort، این کار را انجام دهد. برای مثال اگر scores = [15, 22, 19, 24, 10] باشد، خروجی باید 22 (دومین امتیاز بزرگ پس از 24) باشد.

				
					scores = [15, 22, 19, 24, 10]

max1 = float('-inf')

max2 = float('-inf')

for s in scores:

        if s > max1:

            max2 = max1

            max1 = s

        elif s > max2 and s != max1:

            max2 = s

print("Second highest score:", max2)
				
			

در این روش از دو متغیر کمکی max1 و max2 استفاده کرده‌ایم تا به ترتیب بزرگ‌ترین و دومین بزرگ‌ترین مقدار را دنبال کنیم. با پیمایش لیست، اگر عنصر جاری از بزرگ‌ترین مقدار فعلی (max1) بزرگ‌تر بود، آن را به عنوان بزرگ‌ترین به‌روز می‌کنیم و مقدار قبلی max1 را به max2 می‌دهیم. در غیر این صورت اگر تنها از max1 کوچک‌تر اما از max2 بزرگ‌تر بود، به عنوان max2 جدید در نظر گرفته می‌شود. در پایان مقدار max2 همان دومین عدد بزرگ لیست است.

تمرین ۲۶: یافتن موقعیت یک عنصر (جستجوی اندیس)

برنامه‌ای بنویسید که اندیس (index) یک عنصر مشخص را در لیست برگرداند بدون استفاده از متد index. به عنوان مثال اگر لیست شما names = [“Ahmad”, “Batool”, “Reza”] باشد و به دنبال “Reza” بگردید، باید عدد ۲ (اندیس عنصر “Reza”) نتیجه داده شود. اگر عنصر مورد نظر در لیست نبود، می‌توانید پیغامی مبنی بر عدم وجود آن نمایش دهید.

				
					names = ["Ahmad", "Batool", "Reza"]

target_name = "Reza"

found_index = -1

for i in range(len(names)):

        if names[i] == target_name:

            found_index = i

            break

if found_index != -1:

        print(f"Index of {target_name}:", found_index)

else:

        print(f"{target_name} not found in list.")
				
			

برای یافتن اندیس یک عنصر، لیست را به صورت ترتیبی پیمایش می‌کنیم تا جایی که عنصر مورد نظر پیدا شود. متغیر found_index در ابتدا -1 فرض شده (نمایانگر “نیافتن”). هنگام پیدا شدن اولین نمونه از عنصر، اندیس مربوطه ذخیره شده و با break از حلقه خارج می‌شویم. در پایان، اگر found_index تغییر کرده بود (غیر از -1)، آن را چاپ می‌کنیم وگرنه پیام “یافت نشد” نمایش داده می‌شود.

تمرین ۲۷: ترکیب متناظر دو لیست (ادغام اندیس‌به‌اندیس)

دو لیست هم‌اندازه دارید که یکی حاوی نام کوچک افراد و دیگری حاوی نام خانوادگی آن‌هاست. برنامه‌ای بنویسید که با ترکیب متناظر این دو لیست، یک لیست جدید از اسم کامل هر فرد بسازد. برای مثال با first_names = [“Ali”, “Sara”] و last_names = [“Rezai”, “Ahmadi”] خروجی باید لیست [“Ali Rezai”, “Sara Ahmadi”] باشد.

				
					first_names = ["Ali", "Sara"]

last_names = ["Rezai", "Ahmadi"]

full_names = []

for i in range(len(first_names)):

        full_names = full_names + [first_names[i] + " " + last_names[i]]

print("Full names:", full_names)
				
			

در این برنامه با استفاده از اندیس یکسان برای هر دو لیست، عناصر متناظر را با یک فاصله‌ی میانی به هم متصل کرده‌ایم. حاصل هر الحاق یک رشته نام کامل است که به لیست full_names افزوده می‌شود. به این ترتیب به ازای هر موقعیت i، نام کوچک و نام خانوادگی مربوط به هم ترکیب شده و در خروجی فهرست کاملی از نام‌ کامل افراد ایجاد می‌گردد.

تمرین ۲۸: دسترسی به عنصر در لیست تو در تو

یک لیست تو در تو (لیست شامل لیست‌ها) دارید که هر زیرلیست نمایانگر کلاس‌های یک مدرسه و هر عنصر در آن‌ها نام یک دانش‌آموز است. مثلاً classes = [[“Ali”, “Reza”], [“Sara”, “Mina”]]. برنامه‌ای بنویسید که به یک عنصر مشخص در ساختار تو در تو دسترسی پیدا کند. برای نمونه، نام “Mina” که در کلاس دوم و موقعیت دوم قرار دارد را چاپ کند.

				
					classes = [["Ali", "Reza"], ["Sara", "Mina"]]

student = classes[1][1]

print("Student name:", student)
				
			

برای دسترسی به عناصر یک لیست تو در تو از دو جفت براکت استفاده می‌کنیم. ابتدا اندیس کلاس مورد نظر را مشخص می‌کنیم (اینجا 1 برای کلاس دوم) و سپس اندیس دانش‌آموز در آن کلاس (اینجا نیز 1 برای دانش‌آموز دوم در کلاس دوم). در نتیجه مقدار “Mina” انتخاب و چاپ می‌شود.

تمرین ۲۹: لیست تو در تو (تبدیل به لیست تک‌بعدی)

یک لیست از لیست‌ها دارید (مثلاً لیست نمرات چند دانش‌آموز که هر زیرلیست نمرات یک دانش‌آموز است: grades = [[18, 15], [20, 19, 17], [16]]). برنامه‌ای بنویسید که این ساختار را تبدیل کرده (flatten) و تمام نمرات را در یک لیست تک‌بعدی قرار دهد. برای مثال از ورودی بالا خروجی باید [18, 15, 20, 19, 17, 16] باشد.

				
					grades = [[18, 15], [20, 19, 17], [16]]

flat_list = []

for sublist in grades:

        for grade in sublist:

            flat_list = flat_list + [grade]

print("Flattened list:", flat_list)
				
			

برای تبدیل کردن یک لیست تو در تو، ابتدا هر زیرلیست را از لیست اصلی جدا کرده و سپس تمام عناصر داخل آن را به یک لیست نتیجه اضافه می‌کنیم. در این‌جا با دو حلقه تو در تو این کار انجام شده است: حلقه‌ی بیرونی روی زیرلیست‌ها و حلقه‌ی داخلی روی عناصر هر زیرلیست پیمایش می‌کند و مقادیر را به flat_list الحاق می‌کند. نتیجه نهایی یک لیست ساده شامل همه نمرات خواهد بود.

تمرین ۳۰: استفاده از List Comprehension

برنامه‌ای بنویسید که از قابلیت لیست‌سازی (list comprehension) در پایتون استفاده کند. به طور مشخص، یک لیست از اعداد را بگیرید و لیست جدیدی شامل مجذور هر عدد ایجاد کنید. برای مثال با ورودی numbers = [1, 2, 3, 4] خروجی باید [1, 4, 9, 16] باشد. (این تمرین را می‌توان مانند تمرین ۱۴ انجام داد، اما هدف این است که روش list comprehension را به کار ببرید.)

				
					کد پایتون:

numbers = [1, 2, 3, 4]

squares = [x * x for x in numbers]

print("Squares:", squares)
				
			

لیست کامپرهنشن یک ساختار مختصر در پایتون است که به ما امکان می‌دهد با یک عبارت، لیستی جدید بر اساس یک لیست موجود ایجاد کنیم. در اینجا عبارت [x * x for x in numbers] برای هر عنصر x در لیست numbers مقدار x*x را محاسبه کرده و به عنوان یک عنصر جدید در لیست squares قرار می‌دهد. نتیجه‌ی اجرای بالا یک لیست شامل مجذور تمامی اعداد ورودی است. (این روش معادل انجام همین کار با حلقه‌ی for و افزودن عنصر به لیست است، اما به صورت خلاصه‌تر و پایتونیک انجام شده است.)

نوشته های مرتبط

نظرات کاربران

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *