# Revision
a= [1,[2,3],4,[5,[[6],7]],8,9,['a','b','c']]
print(a[3][1][0][0])
a[0]=10
print (a)
a[1]=10
print (a)
# slice
a= [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
print(a[10],a[-4])
x = 2
y = 17
z = 4
b = slice(x,y,z) #start, end-1, step
print(type(b))
print(a[b],a[0:15:7])
print(a[:10])
print(a[::5]) # if number not given, default as 0:0:1
del a[::5]
print(a[::5])
a.remove(4) # remove is a funtion, del is operator
print (a[::5])
a.clear() # basically means a=[]
print(a)
a= [1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16]
print(a)
a.sort(reverse=True)
b= sorted(a)
print(a)
print(b)
a=[1,2,3,4,9,10,11,12,16,5,6,7,8,13,14,15]
print (a.count(6),a.index(10)) # count = no. of times occur, index = position number
a.sort()
print(a)
b=sorted(a,reverse=True)
print(a)
print(b)
# Tuple ()
a=1,2,3,4,9,10,11,12,16,5,6,7,8,13,14,15
print (a.count(6),a.index(10)) # count = no. of times occur, index = position number
print(a)
b=sorted(a,reverse=True)
print(a)
print(b)
b= 1, #tuple with 1 element
print (b,type(b))
b=() #empty tuple
print (b,type(b))
# Set {}
a={1,2,3,4,9,'a',10,11,12,'a',16,'b',5,6,6,7,'c',8,13,14,15}
print (type(a))
print (a)
a=list(set(a))
a={1,2,3,4,9,'a',10,11,12,'a',16,'b',5,6,6,7,'c',8,13,14,15}
print (type(a))
print (a)
print (type(a))
a.add(16)
a.update(a,{17,18})
print(a)
# 4 set symbols, erb want you to know
a={1,2,3,4}
b={3,4,5,6}
print (a|b)
print (a-b)
print (a^b)
print (a&b)
# Dictionary
person = {"name" : "john", "age" : 10, "gender" : "M"}
print (person["name"])
print (person)