А можно привести оба списка к множествам и найти их пересечение:
result = list(set(a) & set(b))
Однако в таком случае каждый элемент встретится в результирующем списке лишь один раз, т.к. множество поддерживает уникальность входящих в него элементов. Первые два решения (с фильтрацией) оставят все дубли на своих местах.
// PascalABC.NET 3.0, сборка 1144 от 16.01.2016 begin var s:=ReadInteger('n=').ToString; Writeln('Количество цифр, меньших 6, равно ', s.Where(x->x<'6').Count); Writeln('Сумма первой и последней цифры равна ', StrToInt(s[1])+StrToInt(s[s.Length])); Writeln('Сумма самой маленькой и самой большой цифры равна ', StrToInt(s.Min)+StrToInt(s.Max)); end.
Тестовое решение: n= 254904 Количество цифр, меньших 6, равно 5 Сумма первой и последней цифры равна 6 Сумма самой маленькой и самой большой цифры равна 9
А) 1 *2^{0}+1 *2^{3} +1* 2^{2}+1* 2^{4}+1* 2^{5}+1* 2^{7} =1+4+8+16+32+128=189 степени расставлять с конца (начиная с нуля) б) 112 (см. а) в) деление в один большой столбик. если число четное, то в остатке 0, а если нечетное, то единица. число собирать с конца. 1100011101101 г) 10010100110 (см. в) д) 10000101101 е) 10011010100 (см.в) ж) 10101100000011 з) 27 (см. а) и) 752
а) вверху дописано г) лучше делить столбиком, как в 1-м классе, но тут неудобно так писать, поэтому я распишу так. 1190/2=595 (ост. 0) 595/2=297 (ост.1) 297/2=148 (ост.1) 148/2=74 (ост. 0) 74/2=37 (ост.0) 37/2=18 (ост. 1) 18/2=9 (ост. 0) 9/2=4 (ост.1) 4/2=2 (ост.0) 2/2=1 (ост.0) собираем с конца 10010100110
Объяснение:
Можем воспользоваться функцией filter:
result = list(filter(lambda elem: elem in b, a))
Или списковым включением:
result = [elem for elem in a if elem in b]
А можно привести оба списка к множествам и найти их пересечение:
result = list(set(a) & set(b))
Однако в таком случае каждый элемент встретится в результирующем списке лишь один раз, т.к. множество поддерживает уникальность входящих в него элементов. Первые два решения (с фильтрацией) оставят все дубли на своих местах.