Академия Eduson

Вложенные списки. Часть 2

 Работа с вложенными списками

 Что покажет приведенный ниже фрагмент кода?:

list1 = [[1, 2, 3], [4, 5]]
list2 = list1

list1[0].append(7)

print(list2)

 Ответ:  [[1, 2, 3, 7], [4, 5]]

 Чему будет равно list1[1][1] после выполнения следующего фрагмента кода?:

list1 = [[1] * 3] * 3
list1[0][1] = 5

 Ответ:  5

 Что покажет приведенный ниже фрагмент кода:

n = 3
list1 = []

for _ in range(n):
    row = input().split()
    list1.extend(row)

print(list1)

если на вход программе подаются следующие строки?:

9 7 6
2 1
3 4 45 67

 Ответ:  ['9', '7', '6', '2', '1', '3', '4', '45', '67']

 Какой тип данных будет у переменной row?:

my_list = [[1], [2, 3], [4, 5, 6]]

total = 0
for row in my_list:
    total += sum(row)

print(total)

 Ответ:  list

 Что покажет приведенный ниже фрагмент кода?:

my_list = [[12, 221, 3], [41, 5, 633], [71, 8, 99]]

maximum = my_list[0][0]
minimum = my_list[0][0]

for row in my_list:
    maximum = max(row)
    minimum = min(row)

print(maximum + minimum)

 Ответ:  107

 Что покажет приведенный ниже фрагмент кода?:

my_list = [[12, 221, 3], [41, 5, 633], [71, 8, 99]]

maximum = my_list[0][0]
minimum = my_list[0][0]

for row in my_list:
    if max(row) > maximum:
        maximum = max(row)
    if min(row) < minimum:
        minimum = min(row)

print(maximum + minimum)

 Ответ:  636

 На вход программе подается число n. Напишите программу, которая создает и выводит построчно список, состоящий из n списков [[1, 2, ..., n], [1, 2, ..., n], ..., [1, 2, ..., n]].

a = int(input())

rez = [[j for j in range(1, a + 1)] for i in range(1, a + 1)]

print(*rez, sep='\n')

 На вход программе подается число n. Напишите программу, которая создает и выводит построчно вложенный список, состоящий из n списков [[1], [1, 2], [1, 2, 3], ..., [1, 2, ..., n]].

n = int(input())

rez = []

for i in range(1, n + 1):
    rez.append(list(range(1, i + 1)))

print(*rez, sep='\n')  

 Треугольник Паскаля — бесконечная таблица биномиальных коэффициентов, имеющая треугольную форму. В этом треугольнике на вершине и по бокам стоят единицы. Каждое число равно сумме двух расположенных над ним чисел.

0:      1
1:     1 1
2:    1 2 1
3:   1 3 3 1
4:  1 4 6 4 1
      .....

 На вход программе подается число n. Напишите программу, которая возвращает указанную строку треугольника Паскаля в виде списка (нумерация строк начинается с нуля).

n = int(input())
s = []

for i in range(n + 1):
    r = [1] * (i + 1)
    for j in range(i + 1):
        if j != i and j != 0:
            r[j] = s[i - 1][j - 1] + s[i - 1][j]
    s.append(r)    
print(s[n] if n != 0 else [1])

 На вход программе подается натуральное число n. Напишите программу, которая выводит первые n строк треугольника Паскаля.

n = int(input())

p = []

for i in range(n):
    r = [1] * (i + 1)
    for j in range(i + 1):
        if j != 0 and j != i:
            r[j] = p[i - 1][j - 1] + p[i - 1][j]
    p.append(r)

for x in p:
    print(*x)

 На вход программе подается строка текста, содержащая символы. Напишите программу, которая упаковывает последовательности одинаковых символов заданной строки в подсписки.

s = input().split()

seq = [[s.pop(0)]]

for c in s:
    if c in seq[-1]:
        seq[-1].append(c)
    else:
        seq.append([c])

print(seq)

 На вход программе подаются две строки: на одной – символы, на другой – число n. Из первой строки формируется список. Реализуйте функцию chunked(), которая принимает на вход список и число, задающее размер чанка (куска), а возвращает список из чанков (кусков) указанной длины.

def chunked(t, a):
    t = t.split()
    x = [[] for _ in range(0, len(t), a)]
    for i in range(len(x)):
        x[i].extend(t[:a])
        t = t[a:]
    return x

t = input()
a = int(input())
print(chunked(t, a))

 Подсписок — часть другого списка. Подсписок может содержать один элемент, несколько или даже ни одного. Например, [1], [2], [3] и [4] — подсписки списка [1, 2, 3, 4]. Список [2, 3] — подсписок списка [1, 2, 3, 4], но список [2, 4] не подсписок списка [1, 2, 3, 4], так как элементы 2 и 4 во втором списке не смежные (они разрываются элементом 3). Пустой список — подсписок любого списка. Сам список — подсписок самого себя, то есть список [1, 2, 3, 4] подсписок списка [1, 2, 3, 4].
 На вход программе подается строка текста, содержащая символы. Из данной строки формируется список. Напишите программу, которая выводит список, содержащий все возможные подсписки списка, включая пустой список.

t = input().split()

l = [[]]
x = 1

while x != len(t) + 1:
    for i in range(len(t)):
        if len(t[i : i + x]) == x:
            l.append(t[i : i + x])
    x += 1
print(l)