تقریبا در تمام زبان هایی که از نسل سی هستند شما چیزی به اسم مجموعهها یا آرایهها میبینید.در زبان سی یک آرایه، یک مجموعه از متغیر های همنوع هست که خانههای مجاور حافظه به آن تخصیص داده شده است.آرایه زیر یک آرایه از 3 عدد صحیح هست:
int ary[3] = {1, 2, 3};
printf("%i\n", ary[0]); // prints 1
در پایتون چیزی به اسم آرایه وجود ندارد.خود زبان پایتون بصورت ذاتی(منظورم builtin یا توکار هست) چهار نوع مخزن دارد: لیستها(Lists)،توپلها(Tuples)،دایرکتوریها(Directories) و مجموعهها(Sets).
برخلاف آرایهها در سی که تنها میتوانند دادههایی از یک نوع را در خود نگه دارند، مخازن پایتون(جز مجموعهها) میتوانند شامل هر نوع دادهای بصورت همزمان باشند.
لیستها(Lists)
لیستها در پایتون کاربرد زیادی دارند و معمولا زیاد استفاده میشوند.اعضای یک لیست میتوانند عدد صحیح، عدد اعشاری، اشیاء، یک لیست دیگر و ... باشند.تک تک اعضای یک لیست با اندیس گزاری مشخص میشوند و اعضای درون آنها ترتیب دارند.لیستها انعطاف پذیر هستند و میتوانید عضوها را از یک لیست حذف یا به آن اضافه کنید یا لیست را درجا برعکس کنید.
lst = [0, 2, 55]
print(lst[1]) # 2
print(lst[-1]) # 55
_lst = [lst, [lst, [None]]]
print(_lst[0][0]) # 0
متدها
L.append(obj)
یک شئ را به پایان لیست اضافه میکند. چیزی برنمیگرداند.
L = [1, 2, 3]
L.append(4) # L = [1, 2, 3, 4]
L.clear()
تمام اعضای لیست را حذف میکند. چیزی برنمیگرداند.
L.copy()
یک رونوشت از لیست را برمیگرداند.
L.count(value)
تعداد دفعات تکرار یک مقدار در لیست را برمیگرداند که یک عدد صحیح از صفر تا بینهایت است.
L = [1, 2, 3, 3, 3, 3, 3, 4]
print(L.count(3)) # prints 5
L.extend(iterable)
لیست را با iterable گسترش میدهد که شئ اصطلاحا باید iterable باشد یعنی اعضایش را یکجا بربگرداند.(برای اطلاعات بیشتر اینجا را ببینید). از بین انواع دادههای توکار پایتون، برای یک مجموعه، توپل یا یک لیست دیگر اعضای آنها، برای یک دیکشنری مقادیر آن، برای یک رشته تک تک نویسههای آن به انتهای لیست اضافه میشود.
L = list()
L.extend((1, 2)) # L = [1, 2]
L.extend([ None ]) # L = [1, 2, None]
L.extend({1}) # L = [1, 2, None, 1]
L.extend("Hello") L = [1, 2, None, 1, "H", "e", "l", "l", "o"]
L.clear() # L = []
L.extend({"A": 100, "B": 20, "C": [100, 20]}) L = [100, 20, [100, 20] ]
L.index(value [,start [,stop]])
شماره اندیس مقدار value را در لیست برمیگرداند، با ذکر کردن start و stop میتوانید مشخص کنید که از کجا تا کجا پیمایش شود و اگر ذکر نشوند از اول تا آخر لیست پیمایش میشود تا مقدار دیده شود.یک عدد صحیح برمیگرداند.
L = [1, 2, 3, 2, 2]
a = L.index(2) # a is 1
b = L.index(2, 2) # b is 3
c = L.index(2, 1) # c is 1
L.insert(index, obj)
شئ obj را قبل از عنصر indexام اضافه میکند.چیزی برنمیگرداند.
L = [1, 2, 3]
L.insert(0, 0) # Now L = [0, 1 ,2 , 3]
L.pop([index])
شئ indexام را حذف کرده و همان را برمیگرداند. اگر index ذکر نشود، آخرین عضو لیست حذف میشود.
L = [1, 2, 3]
print(L.pop()) # prints 3
print(L.pop(0)) # prints 1
print(L) # prints [2]
L.remove(value)
لیست را پیمایش میکند و تنها یکبار زمانی که مقدار value مشاهده شد، آنرا حذف میکند. چیزی برنمیگرداند.
L = [1, 1, 1, 2, 2, 2, 3, 4, 5]
L.remove(1) # L = [1, 1, 2, 2, 2, 3, 4, 5]
L.remove(2) # L = [1, 1, 2, 2, 3, 4, 5]
L.remove(4) # L = [1, 1, 2, 2, 3, 5]
L.reverse()
L.sort()
این دو به ترتیب لیست را برعکس و مرتب میکنند. چیزی برنمیگردانند.
L = [10, 2, 6, 1, -1, 4]
L.sort() # L = [-1, 1, 2, 4, 6, 10]
L.reverse() # L = [10, 6, 4, 2, 1, -1]
L = list("Cow mooo") # L = ['C', 'o', 'w', ' ', 'm', 'o', 'o', 'o']
L.sort() # L = [' ', 'C', 'm', 'o', 'o', 'o', 'o', 'w']
L.reverse() # L = ['w', 'o', 'o', 'o', 'o', 'm', 'C', ' ']
توپلها(Tuples)
شباهاتی به لیستها دارند اما انعطافپذیری بسیار کمتری دارند و امکان اضافه،حذف،تغییر اعضا یا گسترش یک توپل پس از ایجاد آن وجود ندارد.البته اینها را میتوانید با ایجاد یک توپل جدید انجام دهید. در عوض این محدودیتها،توپلها سرعت بیشتری نسبت به لیستها دارند.
tpl = ()
print(len(tpl)) # 0
tpl = ("", None, 0, False, (), ((), ()))
print(len(tpl)) # 6
از مجموع متد های یک لیست، توپل تنها متدهای count و index را دارد.
دیکشنریها(Dictionaries)
human = {'name': 'john', 'age': 60, 'port': 6667, 'nicks': ('spacea', 'shayan')}
print(human['name']) # john
print(human['age']) # 60
print(human['nicks'][0]) # spacea
nums = dict() # creates an empty dict
nums['one'] = 1
nums['two'] = 2
nums['three'] = 3
print(nums['one']) # 1
StrangeDict = {None: object(), object():[10, 12, 14]}
مثلا در خط اول مثال بالا، john یک مقدار(value) و name یک کلید(key) است.البته دیکشنریها ترتیب ندارند، مثلا این دو باهم برابر هستند:
a = {'a': 10, 'b': 7, 'c': 5}
b = {'b': 7, 'a': 10, 'c': 5}
متدها
D.clear()
D.copy()
D.fromkeys()
D.get(k,[,d])
D.items()
D.keys()
D.pop(k[,d])
D.popitem()
D.setdefault()
D.values()
D.update()
مجموعهها(sets)
myset = {1,2, 3, 4, 5}
anotherset = {0, 12, {}}
the_empty_set = set()
another_empty_set = {} # خطا! این یک دیکشنری خالی است و نه یک مجموعه خالی