''' Operations :
To add element - list.append(), list.insert()
To remove element - list.pop(), list.remove()
To reverse a list - list.reverse()
To sort a list - list.sort()
# List: ordered, mutable, allows duplicate elements.
print("Hello World!")
# 1: index
myList = ['apple', 'banana', 28]
print(myList)
item = myList[0]
item1 = myList[-1]
print('1:', item, item1)
# 2: iterate
for i in myList:
print('2:', i)
# 3: if loop
if 'banana' in myList:
print('3:', 'yes')
else:
print('3:', 'no')
# 4: length of list
print('4:', len(myList))
# 5: append method
myList.append("lemon")
print('5:', myList)
# 6: insert method
myList.insert(1, "blueberry")
print('6:', myList)
# 7: pop method
item2 = myList.pop()
print('7:', item2)
# 8: remove method
item3 = myList.remove("apple")
print('8:', myList)
# 9: reverse list
myList.reverse()
print('9:', myList)
# 10: sort list
list = [10, 8, -90, 8, 1, 34, -5]
print('10:', list)
sorted_list = sorted(list)
print(' ', sorted_list)
# or
"""list = [10, 8, -90, 8, 1, 34, -5]
print('10:', list)
sorted_list = list.sort()
print(' ', list)"""
# 11: duplication
mylist = [0] * 5
print('11:', mylist)
# 12: concatenation of two lists
mylist2 = [1, 2, 3, 4, 5]
new_list = mylist + mylist2
print('12:', new_list)
# 13: slicing
my_list = [1, 2, 3, 4, 5, 6, 7, 8, 9]
p = my_list[1:5] # [start_index:stop_index]
q = my_list[:6] # [blank_from_begining:stop_index]
r = my_list[::1] # [start_index:stop_index:step_index]
s = my_list[::2]
t = my_list[::-1]
print('13:', p, '\\n ', q, '\\n ', r, '\\n ', s, '\\n ', t)
# 14: copy of a list
list_org = ['banana', 'cherry', 'apple']
list_cpy = list_org
list_cpy.append("lemon")
print('14: ', list_org)
print(' ', list_cpy)
# 15: list comprehension
my_List = [1, 2, 3, 4, 5, 6, 7, 8]
x = [i*i for i in my_List]
y = [i+i for i in my_List]
z = [i+1 for i in my_List]
print('15: ', my_List, '\\n ', x, '\\n ', y, '\\n ', z)