چالش روزانه · ۱۱ آبان ۱۴۰۵

چالش پایتون ۱۵: sort چه برمی‌گرداند؟

قبل از اجرای کد، خروجی آن را پیش‌بینی کن. حدس نزن؛ خط به خط فکر کن پایتون چه می‌کند.

L = [3, 1, 2]
x = L.sort()
print(x, L)
خروجی این کد چیست؟

نمایش پاسخ و توضیح

پاسخ درست: گزینهٔ ب — None [1, 2, 3]

گام به گام

L.sort() لیست را درجا (in-place) مرتب می‌کند. یعنی خود L عوض می‌شود و لیست تازه‌ای ساخته نمی‌شود. متدهایی که شیء را درجا تغییر می‌دهند، در پایتون معمولاً None برمی‌گردانند.

L.sort()   →  L = [1, 2, 3]
x = None

جواب: None [1, 2, 3]

sort یا sorted؟

L.sort() sorted(L)
لیست اصلی تغییر می‌کند دست نمی‌خورد
خروجی None لیست مرتب‌شدهٔ جدید

اشتباه رایج: L = L.sort(). با این کار کل لیست را از دست می‌دهید و L می‌شود None. اگر نسخهٔ مرتب‌شده را جداگانه می‌خواهید، sorted(L) بنویسید. (درس متدهای لیست)

حالا خودت اجرا کن و تغییرش بده

L = [3, 1, 2]
x = L.sort()
print(x, L)