> For the complete documentation index, see [llms.txt](https://v-vishwanath.gitbook.io/kiraak/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://v-vishwanath.gitbook.io/kiraak/fundamentals/collections/reference-vs-copy.md).

# Reference vs Copy

Ab socho 2 variable agar ek hi collection ko store karre toh 2 baar same collection ka copy karna padta. Ab agar collection bade bade nikle, tab toh pareshaani hojati. Socho function me collection ko as an argument bhejne ka hai. Tab pure collection ko copy karke function me bhejna padta. Aur usko vapis delete karna bhi hai. Ab ek number ya string rehta toh jyada dikkat nai hai copy karne me, lekin 100 item vali collection ko copy karne me bahut jyada mehnat hai.

Isse accha hamloga ye kar sakte ki jab collection ko koi function me bhejne ka hai, tab uske memory location ko seedha bhej de sakte. Ab ye sab tumharko karne ki jaroorat nai hai, woh computer kudh kar leta. Lekin isse thoda ajeeb harkat aa sakta hai:

```
arr1 boletoh collection jisme 1, 2, 3 hai
arr2 boletoh arr1 hai
arr3 boletoh collection jisme arr1, arr2 hai

arr2 se 2 uda de

screen pe arr1 dikha => [1, 3]
screen pe arr2 dikha => [1, 3]
screen pe arr3 dikha => [[1, 3], [1, 3]]

```

Ab aisa isiliye hua kyunki jab arr2 me hamlogan arr1 daalre, ya arr3 me arr1 aur arr2 daalre, tab ham arr1 nahi, balki uska memory address ko daalre. Toh jab arr1 change hota tab saare jagahon me change hojata.

Ab agar ye nai hona, aur sach me copy ich karna hai, taaki original original rahe, toh uske liye tumhareko apne collection ka copy lena padega:

```
arr1 boletoh collection jisme 1, 2, 3 hai
arr2 boletoh arr1 ka copy hai
arr3 boletoh collection jisme arr1 ka copy, arr2 ka copy hai

arr2 se sab uda de

screen pe arr1 dikha => [1, 2, 3]
screen pe arr2 dikha => []
screen pe arr3 dikha => [[1, 2, 3], [1, 2, 3]]

```

Ye ek bahut important concept hai jiska khayaal karna padta.!
