Set و Range در جولیا
مجموعههای بدون تکرار (Set) و بازههای تنبل (Range) — ابزارهای جولیایی
Set — مجموعه بدون تکرار
Set کالکشنی است که تکرار ندارد و عضویت سریع است:
# تعریف
fruits = Set(["سیب", "موز", "پرتقال", "سیب"])
println(fruits) # سیب فقط یک بار!
# افزودن
push!(fruits, "کیوی")
# بررسی عضویت — سریع!
println("سیب" in fruits) # true
# تعداد اعضای یکتا
nums = [1, 2, 2, 3, 1, 4, 4, 5]
println(length(Set(nums))) # 5
عملیات مجموعهای — مثل ریاضی!
A = Set([1, 2, 3, 4])
B = Set([3, 4, 5, 6])
# اجتماع
println(union(A, B)) # {1, 2, 3, 4, 5, 6}
# اشتراک
println(intersect(A, B)) # {3, 4}
# تفاضل
println(setdiff(A, B)) # {1, 2}
# زیرمجموعه؟
println(issubset(Set([1, 2]), A)) # true
این دقیقاً ریاضیات مجموعه است! جولیا برای ریاضیدانها ساخته شده — union، intersect و setdiff داخلیاند.
Range — بازه تنبل
Range کل بازه را در حافظه نمیسازد — فقط «شروع، پایان، گام» را نگه میدارد:
# بازه ساده
r = 1:5
println(r) # 1:5
println(collect(r)) # [1, 2, 3, 4, 5] — تبدیل به آرایه
# با گام
evens = 0:2:10
println(collect(evens)) # [0, 2, 4, 6, 8, 10]
# معکوس
down = 5:-1:1
println(collect(down)) # [5, 4, 3, 2, 1]
Range در حلقهها
for i in 1:5
print(i, " ")
end
println()
# بازههای بزرگ — بدون مصرف حافظه!
for i in 1:1000000
if i > 3 break end # فقط ۳ بار
println(i)
end
بازه
1:1000000 تقریباً هیچ حافظه نمیگیرد — فقط سه عدد ذخیره میشود. اما collect(1:1000000) یک میلیون عنصر میسازد!عملیات روی Range
r = 1:2:10 # 1, 3, 5, 7, 9
println(length(r)) # 5
println(sum(r)) # 25
println(minimum(r)) # 1
println(maximum(r)) # 9
# عضویت
println(5 in r) # true
println(4 in r) # false
range با اعشار
# گام اعشاری
r = 0:0.5:2
println(collect(r)) # [0.0, 0.5, 1.0, 1.5, 2.0]
# بهتر: LinRange
println(collect(LinRange(0, 1, 5))) # ۵ نقطه بین ۰ و ۱
کاربرد عملی: حذف تکراری با حفظ ترتیب
function uniqueOrdered(arr)
seen = Set{eltype(arr)}()
result = []
for item in arr
if !(item in seen)
push!(seen, item)
push!(result, item)
end
end
return result
end
println(uniqueOrdered([3, 1, 3, 2, 1, 5])) # [3, 1, 2, 5]
جدول مقایسه کالکشنها
| کالکشن | ویژگی | کاربرد |
|---|---|---|
| Array | مرتب، تکراری، تغییرپذیر | لیست پویا |
| Tuple | مرتب، تغییرناپذیر | گروه ثابت |
| Dict | کلید-مقدار | جستجوی سریع |
| Set | بدون تکرار | عضویت سریع |
| Range | تنبل، کمحافظه | بازه اعداد |
این مبحث بخشی از دوره آموزش کامل جولیا است.