"======================================================================List======================================================================"
# список - это изменяемый, итерируемый, индексуемый и упорядоченный тип данных, предназначенный для хранения элементов в строгом порядке.
# list1 = [10, 3.5, 'hello', [1,2,3], (1,2), none, true, false]
# list1[0] # 10
# list1[3] # [1,2,3]
# list1[3] [-1] # 3


# list2 = list('hello')
# print(list2) # ['h', 'e', 'l', 'l', 'o']

# print(list(3,10,2)) # ['3', '5', '7', '9'] # list(3,10,2) = от 3 до 10 с шагами через 2
# print(list(range(5))) # [0,1,2,3,4]

"==================================================================изменяемость=================================================================="
# string = 'hello'
# res = string.upper()
# print(string) # 'hello'
# print(res) # 'HELLO'

"==================================================================Методы списков=================================================================="

#       append - метод, который добавляет элемент в конец списка
# list1 = []
# list1.append(1)    # 'append' = добавляет
# print(list1) # '1'


# list1 = []
# list1.append(1)
# list1.append(2)
# list1.append(3)
# print(list1) # [1,2,3]

# list1 = []
# list1.append('hello')
# list1.append(500)
# list1.append([1,2,3])
# print(list1) # ['hello', 500, [1,2,3]]


#  remove - метод, который удаляет элемент из списка по значению, но только первого вхождение этого элемента, выдаст ошибку ValueError, 
# если такого элемента нет в списке


# list2 = [10, 'hello', 500, 'world', 1000, 'hello', 500]
# list2.remove('hello')  # первую хелло удалит
# print(list2) # [10, 500, 'world', 1000, 'hello', 500]

# pop - метод, который удаляет элемент из списка по индексу. если этого индекса нет, выдаст IndexError
# list3 = [10, 20, 30, 40, 50]
# list3.pop() # удаление последнего элемента
# print(list3) # [10, 20,30,40]

# list3.pop(1) # удаленик по индексу 1
# print(list3) # [10, 30, 40]

# также метод рор возвращает удаленный элемент

# list4 = [10, 20, 30 ,40, 50]
# popped = list4.pop(0) # удалил 10
# print(list4) # [20,30,40,50] 
# print(popped) # 10  # вернул удаленную 10


# list5 = []
# list5.pop()
# IndexError: pop fromempty list

#  insert - метод, который добавляет элемент в список по индексу

# list5 = [1, 2, 3,4]
# list5.insert(0, 'hello') # добавляет хелло по индексу 0
# print(list5) # ['hello', 1, 2, 3, 4]

#                                                       perevorot s1-10 : 10-1
# list5 = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]   === list5 = list(range(1,11))
# print(list5[::-1])
# list5.reverse()
# print(list(reversed(list5)))

# clear - чистит всё и всю

# list1 = [1,2,3,4]
# list1.clear() # почистит 1,2,3,4 == удалит числа

# count - считает кол-во элемента, который передаем в метод в списке

# list1 = ['hello', 'hello', 'hello']
# list1.count('hello') # 3
# list1.count('l') # 0 # потому что хелло это целое ежже, а л нельзя отклеить от слова

# list1 =[11,12,13]
# list1count(1) # 0

# index - возвращает индекс данного элемента
# list2 = ['hello', 'world', 'makers']
# ind = list2.index('hello')
# print(ind) # 0
# list2.index('makers') # 2



# sort - метод, который сортирует по возрастанию
# если передать .sort(reverse=True), то сортирует по убыванию

# copy - возвращает копию списка

list1 =[1,2,3]
list2 =list1.copy()
list2.append(4)
print(list1)
print(list2)

# extend - расширяет список 




"==============================================================append pop=============================================================="
# need to lern it









































