Даны два списка a
и b
(см. ниже).
a
, третий элемент списка a
, последний элемент списка a
.b
элемент 7 (просто допишите в конец).a
на число 8.merged
, который включает в себя все элементы списка a
и списка b
.с
, который получается заменой последнего элемента списка a
на число 100. Сам список a
измениться не должен!a = [1, 0, 9, 12, 18, 34, 89, 91, 33, 127]
b = [2, 8, 9, 11, 76, 25, 44]
# 1
print(a[0], a[2], a[-1])
1 9 127
# 2
b.append(7)
b
[2, 8, 9, 11, 76, 25, 44, 7]
# 3
a[4] = 8
a
[1, 0, 9, 12, 8, 34, 89, 91, 33, 127]
# 4
merged = a + b
merged
[1, 0, 9, 12, 8, 34, 89, 91, 33, 127, 2, 8, 9, 11, 76, 25, 44, 7]
# 5
c = a.copy()
c[-1] = 100
print(a, c)
[1, 0, 9, 12, 8, 34, 89, 91, 33, 127] [1, 0, 9, 12, 8, 34, 89, 91, 33, 100]
Примечание: написать c = a
вместо a.copy()
нельзя, так как этот код создаст ссылку c
на старый список a
, а не новый список c
, поэтому при изменении списка c
список a
также изменится.
Есть список имен:
girls = ["Иветта", "Виолетта", "Кассандра", "Вирджиния", "Амелия", "Розамунда", "Янина", "Беатриса"]
Используя список girls
, выведите на экран следующие списки:
["Виолетта", "Кассандра", "Вирджиния", "Амелия"]
["Вирджиния", "Амелия", "Розамунда", "Янина", "Беатриса"]
["Иветта", "Виолетта", "Вирджиния", "Амелия"]
["Кассандра", "Амелия", "Розамунда"]
print(girls[1:5]) # 1
print(girls[3:]) # 2
print(girls[0:2] + girls[3:5]) # 3
print(girls[2:3] + girls[4:6]) # 4
['Виолетта', 'Кассандра', 'Вирджиния', 'Амелия'] ['Вирджиния', 'Амелия', 'Розамунда', 'Янина', 'Беатриса'] ['Иветта', 'Виолетта', 'Вирджиния', 'Амелия'] ['Кассандра', 'Амелия', 'Розамунда']
В последнем пункте главное не вызвать имя Кассандра отдельно, без среза, так как в таком случае мы будем складывать строку и список, что даст ошибку:
print(girls[2] + girls[4:6])
--------------------------------------------------------------------------- TypeError Traceback (most recent call last) <ipython-input-11-7318500f5786> in <module> ----> 1 print(girls[2] + girls[4:6]) TypeError: must be str, not list
Эту ошибку можно исправить, добавив квадратные скобки вокруг Кассандры, создав список из одного элемента (хотя, конечно, решение со срезами более элегантное):
print([girls[2]] + girls[4:6])
['Кассандра', 'Амелия', 'Розамунда']
Дан список L
. Выведите на экран (последовательно, с новой строчки):
L
;L
.L = [12, 3, 8, 125, 10, 98, 54, 199]
Замените пятый элемент списка L
на 0. Проделайте те же операции, что и раньше. Объясните, почему получаются такие результаты.
# до добавления 0 - все элементы
for i in L:
print(i)
12 3 8 125 10 98 54 199
# до добавления 0 - натуральные логарифмы всех элементов
import math
for j in L:
print(math.log(j))
2.4849066497880004 1.0986122886681098 2.0794415416798357 4.8283137373023015 2.302585092994046 4.584967478670572 3.9889840465642745 5.293304824724492
Примечание: импортировать модули или библиотеки нужно вне циклов, так как их достаточно импортировать один раз. Многократный импорт библиотеки в цикле не вызовет ошибку, но замедлит исполнение кода (на таком простом примере мы это не заметим, но это так).
# после добавления 0 – натуральные логарифмы всех элементов
L[4] = 0
L
for j in L:
print(math.log(j))
2.4849066497880004 1.0986122886681098 2.0794415416798357 4.8283137373023015
--------------------------------------------------------------------------- ValueError Traceback (most recent call last) <ipython-input-16-cf9356caa037> in <module> 4 5 for j in L: ----> 6 print(math.log(j)) ValueError: math domain error
На пятом элементе все сломалось, исполнение кода остановилось, Python вышел из цикла. Значит, проблема с нулем. Это объяснимо, логарифм не определен для неположительных чисел. Python выдает ошибку значения ValueError
и пишет про domain, что по-английски область определения функции, то есть множество значений, которые может принимать аргумент функции.
В списке age
сохранены значения возраста респондентов:
age = [24, 35, 42, 27, 45, 48, 33]
Создайте список age2
, в котором будут храниться значения возраста, возведенные в квадрат.
Подсказка: используйте цикл for
.
age = [24, 35, 42, 27, 45, 48, 33]
age2 = []
for a in age:
age2.append(a ** 2)
age2
[576, 1225, 1764, 729, 2025, 2304, 1089]
# то же, но со списковыми включениями
age2 = [a**2 for a in age]
age2
[576, 1225, 1764, 729, 2025, 2304, 1089]
Питон просит пользователя загадать (ввести с клавиатуры) целое число $k$ от 1 до 10. Питон берет это число $k$ и выводит на экран $k$-тый элемент списка numbers
, причем $k$-ый элемент в привычном понимании, в нумерации, которая начинается с единицы.
Список numbers
:
numbers = [1, 5, 6, 8, 10, 21, 25, 1, 0, -9, 9]
Пояснение:
Входные данные:
Введите целое число от 1 до 10: 3
Выходные данные:
6
k = int(input("Enter a number: "))
print(numbers[k-1])
Enter a number: 6 21
Объясните, что делает следующий код и почему он выдает такие результаты:
l = [1,2,3,4]
for i in range(len(l)):
a = l[i] + l[i-1]
print(a)
5 3 5 7
Разберем код на части. Что такое range(len(l))
?
list(range(len(l))) # индексы элементов списка l
[0, 1, 2, 3]
Значит, цикл for
бегает по индексам списка l
. Тогда l[i]
‒ это i-тый элемент списка l
, а l[i-1]
‒ элемент, предшествующий i-тому элементу. Эти два элемента складываются, и результат сохраняется в a
.
Посмотрим. Если i = 0
, то получаем l[0]
и l[-1]
. Значит, на первом шаге (на первой итерации) цикла мы складываем первый и последний элементы списка.
1 + 4 = 5
Двигаемся дальше. Если i = 1
, то получаем l[1]
и l[0]
. Значит, на втором шаге цикла мы складываем второй и первый элементы списка.
2 + 1 = 3
И так далее.
Почему этот код интересен? Потому, что он не ломается: Python не возражает против отрицательных индексов элементов, он просто начинает считать элементы с конца списка.