#collections.py # LIST [] # ordered (indexes are integers 0-len(list)-1), i.e. subscriptable # duplicates # mutable list_var = [] #empty list. or: list() print("list_var:",list_var) list_var = [34,'hello',2.718281828, 12345678] print("list_var:",list_var) for item in list_var: print(item, end=" ") print() for i in range(len(list_var)): print(list_var[i], end=" ") print() list_var.append('appended item') print("list_var:",list_var) print(list_var[::-1]) #returns reversed list list_var.reverse() #reverses the list print(list_var) #print(sorted(list_var)) #returns sorted list #list_var.sort() #sorts the list, items must be same type. random.shuffle(list) #print(list_var) # TUPLE () a list that can't be changed. only count(val) and index(val) # ordered, i.e. subscriptable # duplicates # immutable list, immutable items. Can not add, delete, modify items. #Uses: slightly more efficient than list; so if values not to change, ensure so with tuple # function return multiple values as a tuple: return a,b,c # swap: a,b = b,a tup = (34,56,23,78,56) print(tup) for i in range(len(tup)): #or: for t in tup: print(tup[i], end=" ") print() print(tup.count(56)) print(sorted(tup)) #returns a list # SET {} # unordered # NO duplicates # immutable elements (but can be deleted and new ones added) set1 = {"asdf","qwerty","ssss","ert"} print(sorted(set1)) #returns a list # cannot be a set of lists. # test for membership with in. Faster than list membership check print('arf' in set1) # DICTIONARY {} key:value pairs # unordered (index is key) # NO duplicate (keys) # mutable dict_var = {} #empty. or: dict() print("dict_var:",dict_var) # key can be string or numeric dict_var = {"key1":'val1', "key2":1234, 345:"val3"} #no concept of order print("dict_var:",dict_var) for k in dict_var: #loop over the keys #print(k,dict_var[k], end=" ") print(k,dict_var.get(k), end=" ") print() for k,v in dict_var.items(): #items() returns a list of 2-tuples print(k,v, end=" ") print() dict_var["key1"] = 12341234 #replaces existing value print("dict_var:",dict_var) dict_var["key3"] = 9999 #new item print("dict_var:",dict_var) #typical use: frequency import random people = ["alice","bob","carol","ted","zippy"] freq_dict = dict([(name,0) for name in people]) print(freq_dict) for i in range(20): freq_dict[random.choice(people)] += 1 print(freq_dict) keys = ("name","age","city") # like a record/struct values1 = ("bob",23,"boston") values2 = ("alice",24,"naha") values3 = ("carol",51,"kadena") d1 = dict([(keys[i],values1[i]) for i in range(len(keys))]) d2 = dict([(keys[i],values2[i]) for i in range(len(keys))]) d3 = dict([(keys[i],values3[i]) for i in range(len(keys))]) dict_list = [d1,d2,d3] values = [("bob",23,"boston"),("alice",24,"naha"),("carol",51,"kadena")] dict_list2 = [dict([(keys[i],values[d][i]) for i in range(len(keys))]) for d in range(len(values))]