Вложенные списки. Часть 1 | Вложенные списки. Часть 2
Треугольник Паскаля — бесконечная таблица биномиальных коэффициентов, имеющая треугольную форму. В этом треугольнике на вершине и по бокам стоят единицы. Каждое число равно сумме двух расположенных над ним чисел.
0: 1
1: 1 1
2: 1 2 1
3: 1 3 3 1
4: 1 4 6 4 1
.....
На вход программе подается число n. Напишите программу, которая возвращает указанную строку треугольника Паскаля в виде списка (нумерация строк начинается с нуля).
Формат входных данных
На вход программе подается число n (n≥0).
Формат выходных данных
Программа должна вывести указанную строку треугольника Паскаля в виде списка.
Примечание 1. Решение удобно оформить в виде функции pascal()
, которая принимает номер строки и возвращает соответствующую строку треугольника Паскаля.
Примечание 2. Графическая иллюстрация формирования треугольника Паскаля.
Примечание 3. Подробнее прочитать о треугольнике Паскаля можно тут.
Тестовые данные 🟢
Sample Input 1:
0
Sample Output 1:
[1]
Sample Input 2:
3
Sample Output 2:
[1, 3, 3, 1]
num=int(input())
def pascal(n):
n = n+1
arr=[]
for i in range(n):
row=[1]*(i+1)
for j in range(1,i):
row[j] = arr[i - 1][j - 1] + arr[i - 1][j]
arr.append(row)
return arr[n-1]
print(pascal(num))
На вход программе подается натуральное число nn. Напишите программу, которая выводит первые n строк треугольника Паскаля.
Формат входных данных
На вход программе подается число n (n≥1).
Формат выходных данных
Программа должна вывести первые n строк треугольника Паскаля, каждую на отдельной строке в соответствии с образцом.
Тестовые данные 🟢
Sample Input 1:
4 Sample Output 1:
1 1 1 1 2 1 1 3 3 1
num=int(input())
def pascal(n):
arr=[]
for i in range(n):
row=[1]*(i+1)
for j in range(1,i):
row[j] = arr[i - 1][j - 1] + arr[i - 1][j]
arr.append(row)
return arr
for i in range(num):
print(*pascal(num)[i])
На вход программе подается строка текста, содержащая символы. Напишите программу, которая упаковывает последовательности одинаковых символов заданной строки в подсписки.
Формат входных данных
На вход программе подается строка текста, содержащая символы, отделенные символом пробела.
Формат выходных данных
Программа должна вывести указанный вложенный список.
Тестовые данные 🟢
Sample Input 1:
a b c d
Sample Output 1:
[['a'], ['b'], ['c'], ['d']]
Sample Input 2:
w w w o r l d g g g g r e a t t e c c h e m g g p w w
Sample Output 2:
[ ['w', 'w', 'w'], ['o'], ['r'], ['l'], ['d'], ['g', 'g', 'g', 'g'], ['r'], ['e'], ['a'], ['t', 't'], ['e'], ['c', 'c'], ['h'], ['e'], ['m'], ['g', 'g'], ['p'], ['w', 'w'] ]
n = input()
# Разделить строку по пробелам
r = n.split()
# Инициализируем переменные
arr = []
tempArr = []
# Проходим по всем символам
for i in range(len(r)):
if i==0 or r[i] == r[i-1]:
# Если это первый символ или он равен предыдущему, добавляем его в временный лист
tempArr.append(r[i])
else:
# Если символ не равен предыдущему, сохраняем временный лист в постояный и переназначаем ему новое значение
arr.append(tempArr)
tempArr = [r[i]]
# Если в временом листе осталось значение добавляем его в постоянный
if tempArr:
arr.append(tempArr)
print(arr)
На вход программе подаются две строки: на одной – символы, на другой – число n. Из первой строки формируется список.
Реализуйте функцию chunked()
, которая принимает на вход список и число, задающее размер чанка (куска), а возвращает список из чанков (кусков) указанной длины.
Формат входных данных
На вход программе подается строка текста, содержащая символы, отделенные символом пробела и число nn на отдельной строке.
Формат выходных данных
Программа должна вывести указанный вложенный список.
Примечание. Не забудьте вызвать функцию chunked()
, чтобы вывести результат. 😀
Тестовые данные 🟢
Sample Input 1:
a b c d e f 2
Sample Output 1:
[ ['a', 'b'], ['c', 'd'], ['e', 'f'] ]
Sample Input 2:
a b c d e f r g b 2
Sample Output 2:
[ ['a', 'b'], ['c', 'd'], ['e', 'f'], ['r', 'g'], ['b'] ]
import math
str = input()
n = int(input())
r = str.split()
# Инициализируем переменные
arr = []
count1 = 0
count2 = n
# Проходим по всем символам
for i in range(math.ceil(len(r)/n)):
arr.append(list(r[count1:count2]))
count1 += n
count2 += n
print(arr)
Подсписок — часть другого списка. Подсписок может содержать один элемент, несколько или даже ни одного. Например, [1]
, [2]
, [3]
и [4]
— подсписки списка [1, 2, 3, 4]
. Список [2, 3]
— подсписок списка [1, 2, 3, 4]
, но список [2, 4]
не подсписок списка [1, 2, 3, 4]
, так как элементы 22 и 44 во втором списке не смежные (они разрываются элементом 33). Пустой список — подсписок любого списка. Сам список — подсписок самого себя, то есть список [1, 2, 3, 4]
подсписок списка [1, 2, 3, 4]
.
На вход программе подается строка текста, содержащая символы. Из данной строки формируется список. Напишите программу, которая выводит список, содержащий все возможные подсписки списка, включая пустой список.
Формат входных данных
На вход программе подается строка текста, содержащая символы, отделенные символом пробела.
Формат выходных данных
Программа должна вывести указанный список, содержащий все возможные подсписки, включая пустой список в соответствии с примерами.
Примечание. Порядок списков одинаковой длины должен соответствовать порядку их вхождения в основной список.
Тестовые данные 🟢
Sample Input 1:
a b
Sample Output 1:
[ [], ['a'], ['b'], ['a', 'b'] ]
Sample Input 2:
a b v
Sample Output 2:
[ [], ['a'], ['b'], ['v'], ['a', 'b'], ['b', 'v'], ['a', 'b', 'v'] ]
# Считываем строку и преобразуем её в список
n = input().split()
# Создаем два пустых списка
fin, tot = [], [[]]
# Первый нарастающий цикл i от 0 до len(n)
for i in range(len(n)):
# print('индекс строки', i)
# Второй нарастающий цикл j от 0 до len(n)
for j in range(len(n)):
# print('второй индекс строки', j)
# Создаем подсписок fin
fin = n[j:i + j + 1]
#print('подсписок fin', fin)
# print('длина подсписка fin', len(fin))
# Проверяем длину подсписка fin
if len(fin) == i + 1:
# Добавляем список fin в основной список tot
tot.append(fin)
# print('списк tot', tot)
print(tot)