Перейти к содержимому

Дан список целых чисел определите какое число в этом списке встречается чаще всего

  • автор:

Списки

Во всех задачах этого листка программа получает на вход строку из целых чисел, разделенных пробелами. В конце строки также могут быть пробелы. Данную строку необходимо считать в список целых чисел.

A: Четные индексы

Выведите все элементы списка с четными индексами (то есть A[0] , A[2] , A[4] , . ).

1 2 3 4 5
1 3 5

B: Четные элементы

1 2 2 3 3 3 4
2 2 4

C: Больше предыдущего

1 5 2 4 3

D: Первый положительный

Выведите индекс первого положительного элемента в данном списке. Он обязательно есть в списке.

-1 0 1

E: Первый положительный — 2

Выведите индекс первого положительного элемента в данном списке. Если такого элемента нет, программа должна вывести число -1.

-1 0 1

F: Наибольший элемент

1 2 3 2 1

G: Больше своих соседей

1 0 1 0 1

H: Наименьший положительный

5 -4 3 -2 1

I: Ближайшее число

Дан список чисел и некоторое число. Найдите в данном списке элемент, ближайший к заданному.

В первой строке заданы элементы списка (целые числа, не превосходящие по модулю \(10^9\)). Гарантируется, что в списке есть хотя бы один элемент.

Во второй строке дано одно целое число \(x\), не превосходящее по модулю \(10^9\)

6 5 4 2 1
3
1 2 4 5 6
3
1 2 3
2

J: Шеренга

Андрей перешёл в другую школу. На уроке физкультуры ему понадобилось определить своё место в строю. Помогите ему это сделать.

Программа получает на вход невозрастающую последовательность натуральных чисел, означающих рост каждого человека в строю. После этого вводится число X — рост Андрея. Все числа во входных данных натуральные и не превышают 200.

Выведите номер, под которым Андрей должен встать в строй. Если в строю есть люди с одинаковым ростом, таким же, как у Андрея, то он должен встать после них.

165 163 160 160 157 157 155 154
162
165 163 160 160 157 157 155 154
160

K: Количество различных элементов

1 2 2 3 3 3

L: Наименьший нечетный

Выведите значение наименьшего нечетного элемента списка, а если в списке нет нечетных элементов — выведите число 0 .

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

В решении этой задачи нельзя использовать вспомогательный список.

0 1 2 3 4
2 4 6 8 10

M: Переставить в обратном порядке

Переставьте элементы данного списка в обратном порядке, затем выведите элементы полученного списка.

Вам нужно не просто вывести элементы списка от первого до последнего, а требуется изменить значения элементов самого списка, поменяв местами A[0] c A[n — 1] , A[1] с A[n — 2] , а затем вывести элементы списка подряд с начала.

В этой задаче нельзя использовать срезы и вспомогательный список.

1 2 3 4 5
5 4 3 2 1

N: Переставить соседние

Переставьте соседние элементы списка ( A[0] c A[1] , A[2] c A[3] и т.д.). Если элементов нечетное число, то последний элемент остается на своем месте.

В решении этой задачи нельзя использовать вспомогательный список.

1 2 3 4 5
2 1 4 3 5

O: Переставить min и max

3 4 5 2 1
3 4 1 2 5

P: Соседи одного знака

Дан список чисел. Если в нем есть два соседних элемента одного знака (то есть оба положительных или оба отрицательных), выведите эти числа. Если соседних элементов одного знака нет — не выводите ничего. Если таких пар соседей несколько — выведите первую такую пару.

-1 2 3 -1 -2

Q: Циклический сдвиг вправо

Циклически сдвиньте элементы списка вправо ( A[0] переходит на место A[1] , A[1] на место A[2] , . последний элемент переходит на место A[0] ).

В этой задаче нельзя использовать срезы и вспомогательный список.

Гарантируется, что в списке есть хотя бы один элемент.

1 2 3 4 5
5 1 2 3 4

R: Количество совпадающих пар

1 2 3 2 3
1 1 1 1 1

S: Два ближайших

Дан список целых чисел, содержащий как минимум два элемента. Найдите в нем два ближайших элемента (то есть два элемента с минимальной абсолютной разностью).

7 0 4 2 5 9

T: Количество различных элементов — 2

3 2 1 2 3

U: Медиана

В списке — нечетное число элементов, при этом все элементы различны. Найдите медиану списка: элемент, который стоял бы ровно посередине списка, если список отсортировать.

При решении этой задачи нельзя модифицировать данный список (в том числе и сортировать его), использовать вспомогательные списки.

6 1 9 2 3 4 8

V: Уникальные элементы

Дан список. Выведите те его элементы, которые встречаются в списке только один раз. Элементы нужно выводить в том порядке, в котором они встречаются в списке.

1 2 2 3 3 3

W: Самое частое число

Дан список. Не изменяя его и не используя дополнительные списки, определите, какое число в этом списке встречается чаще всего.

1 2 3 2 3 3

X: Числа \(k\)-боначчи

Назовем последовательность чисел последовательностью \(k\)-боначчи, если каждый элемент этой последовательности является суммой \(k\) предыдущих членов последовательности. В частности, последовательность \(2\)-боначчи является последовательностью Фибоначчи.

Более формально, \(i-й\) элемент последовательности \(k_i\) равен 1, если \(0\le i\le k — 1\) и равен сумме \(k\) предыдущих членов последовательности \(k_ + k_ + . + k_\) при \(i\ge k\).

100 0

Y: Кузнечики

\(N\) кузнечиков стоят в ряд. Для каждого кузнечика задана числовая характеристика — длина его прыжка. Если длина прыжка кузнечика равна \(l\), то он за один прыжок перепрыгивает через \(l\) других кузнечиков.

Каждую секунду последний кузнечик прыгает к началу ряда, перепрыгивает через столько кузнечиков, чему равна длина его прыжка, и становится между двумя другими кузнечиками.

В первой строке входных данных задана расстановка кузнечиков (длины их прыжков). Во второй строке входных данных задано число секунд \(t\). Опеределите и выведите на экран расстановку кузнечиков через \(t\) секунд. Все длины прыжков — натуральные числа, меньшие, чем число кузнечиков в ряду.

1 2 3 4 2
2
4 1 2 2 3

Z: Ферзи

Известно, что на доске 8×8 можно расставить 8 ферзей так, чтобы они не били друг друга. Вам дана расстановка 8 ферзей на доске, определите, есть ли среди них пара бьющих друг друга.

1 7
2 4
3 2
4 8
5 6
6 1
7 3
8 5
1 8
2 7
3 6
4 5
5 4
6 3
7 2
8 1

Решение задач на Python. Списки. Операции со списками

Программирование на языке Python. Массивы (списки)

СПИСКИ. ЗАДАЧА 1
Вам дано число N и число X. Выведите
число X ровно N раз в формате [X, X, X. ,X].
Используйте функцию print() для вывода списка.
Решение:
n=int(input())
x=int(input())
x=[x]
print(x*n)

3.

СПИСКИ. ЗАДАЧА 2
Дано число N. Выведите N квадратов чисел
от 1 до N (включительно) в формате [1, 4, 9, 16,…, N**2].
Используйте функцию print() для вывода списка.
Решение:
n=int(input())
x=[]
for i in range(n):
x.append((i+1)**2)
print(x)

4.

СПИСКИ. ЗАДАЧА 3
Выведите все чётные элементы списка.
Решение:
a=list(map(int, input().split()))
for i in range(len(a)):
if a[i]%2==0:
print(a[i], end=» «)

5.

СПИСКИ. ЗАДАЧА 4
Выведите все элементы списка с чётными индексами (то
есть A[0],A[2],A[4]. ).
Решение:
a=list(map(int, input().split()))
for i in range(0,len(a),2):
print(a[i], end=» «)

6.

СПИСКИ. ЗАДАЧА 5
Дан список чисел. Определите, сколько в этом списке
элементов, которые больше двух своих соседей, и
выведите количество таких элементов.
Решение:
a=list(map(int, input().split()))
k=0
for i in range(1,len(a)-1):
if a[i]>a[i-1] and a[i]>a[i+1]:
k+=1
print(k)

7.

СПИСКИ. ЗАДАЧА 6
Дан список чисел. Если в нем есть два соседних
элемента одного знака, выведите эти числа. Если
соседних элементов одного знака нет — не выводите
ничего. Если таких пар соседей несколько — выведите
первую пару.
Решение:
a=list(map(int, input().split()))
for i in range(len(a)-1):
if (a[i]>=0 and a[i+1]>=0) or (a[i] print(a[i], a[i+1])
break

8.

СПИСКИ. ЗАДАЧА 7
Выведите значение наименьшего из всех положительных
элементов в списке. Известно, что в списке есть хотя бы
один положительный элемент.
Решение:
a=list(map(int, input().split()))
m=1001
for i in range(len(a)):
if a[i]>0 and a[i] m=a[i]
print(m)

9.

СПИСКИ. ЗАДАЧА 8
Дан список, упорядоченный по неубыванию элементов в
нём. Определите, сколько в нём различных элементов.
Решение:
a=list(map(int, input().split()))
k=1
for i in range(len(a)-1):
if a[i]!=a[i+1]:
k+=1
print(k)

10.

СПИСКИ. ЗАДАЧА 9
Напишите программу, которая находит в массиве
элемент, самый близкий по величине к данному числу.
Решение:
a=list(map(int, input().split()))
x=int(input())
minr=a[0]
for i in a:
if abs(i-x) minr=i
print(minr)

11.

СПИСКИ. ЗАДАЧА 10
Петя перешёл в другую школу. На уроке физкультуры ему
понадобилось определить своё место в строю. Помогите
ему это сделать.
Решение:
a=list(map(int, input().split()))
x=int(input())
n=1
for i in range(len(a)):
if a[i]>=x:
n=i+2
print(n)

12.

СПИСКИ. ЗАДАЧА 11
Циклически сдвиньте элементы списка вправо
(A[0] переходит на место A[1], A[1] — на
место A[2],…,A[2],…, последний элемент переходит на
место A[0]).
Решение:
a=input().split()
p=a[-1]
for i in range(len(a)-2, -1, -1):
a[i+1]=a[i]
a[0]=p
print(‘ ‘.join(a))

13.

СПИСКИ. ЗАДАЧА 12
Дан список целых чисел, содержащий как минимум два элемента. Найдите в нём два
ближайших элемента (то есть два элемента с минимальной абсолютной разностью).
Изменять список при этом нельзя.
Решение:
N = int(input())
s = list(map(int, input().split()))
m = 2**32
g=0
g1 = 0
for i in range(N — 1):
for k in range(i+1, N):
if abs(s[i]-s[k]) < m:
m = abs(s[i]-s[k])
g=k
g1 = i
print(g1, g)

14.

СПИСКИ. ЗАДАЧА 13
В списке нечётное число элементов, при этом все элементы различны.
Найдите медиану списка: элемент, который стоял бы ровно посередине
списка, если список отсортировать.
Решение:
n=int(input())
a=list(map(int, input().split()))
for i in range(n):
k=0
for j in range(n):
if a[j] k+=1
if k==len(a)//2:
print(a[i])
break

15.

ОПЕРАЦИИ СО СПИСКАМИ. ЗАДАЧА 1
Используя генератор, составьте список S,
заполненный степенями числа X от 0 до N−1 и
распечатайте его инструкцией print(S).
Решение:
x=int(input())
a=[x**i for i in range(int(input()))]
print(a)

16.

ОПЕРАЦИИ СО СПИСКАМИ. ЗАДАЧА 2
Выведите элементы данного списка в обратном
порядке.
Решение:
a=list(map(int, input().split()))
b=[print(a[-i]) for i in range(1, len(a)+1)]

17.

ОПЕРАЦИИ СО СПИСКАМИ. ЗАДАЧА 3
Вам дан список целых чисел. Разверните
элементы с нечетными индексами.
Решение:
a=input().split()
a[1::2]=a[1::2][::-1]
print(‘ ‘.join(a))

18.

ОПЕРАЦИИ СО СПИСКАМИ. ЗАДАЧА 4
Дан список из чисел и индекс элемента в
списке k. Удалите из списка элемент с индексом k,
сдвинув влево все элементы, стоящие правее
элемента с индексом k.
Решение:
a=list(map(int, input().split()))
k=int(input())
a.pop(k)
a=[print(a[i], end=’ ‘) for i in range(len(a))]

19.

ОПЕРАЦИИ СО СПИСКАМИ. ЗАДАЧА 5
Дан список целых чисел, число k и значение C.
Необходимо вставить в список на позицию с
индексом k элемент, равный C, сдвинув все
элементы, имевшие индекс не менее k, вправо.
Решение:
a=list(map(int, input().split()))
k, c=input().split()
last=a[-1]
a.insert(int(k), int(c))
a=[print(a[i], end=’ ‘) for i in range(len(a))]

20.

ОПЕРАЦИИ СО СПИСКАМИ. ЗАДАЧА 6
Дан список. Посчитайте, сколько в нём различных
элементов, не изменяя самого списка.
Решение:
a =list(map(int, input().split()))
s=0
k = []
for i in a:
if i not in k:
s += 1
k.append(i)
print(len(k))

21.

ОПЕРАЦИИ СО СПИСКАМИ. ЗАДАЧА 7
Дан список. Выведите те его элементы, которые
встречаются в списке только один раз.
Решение:
a = [int(s) for s in input().split()]
for i in range(len(a)):
for j in range(len(a)):
if i != j and a[i] == a[j]:
break
else:
print(a[i], end=’ ‘)

22.

ОПЕРАЦИИ СО СПИСКАМИ. ЗАДАЧА 8
Дан список. Не изменяя его и не используя дополнительные
списки, определите, какое число в этом списке
встречается чаще всего.
Решение:
s = [int(s) for s in input().split()]
max = s[0]
max_k = s.count(max)
for i in s:
if s.count(i)>max_k:
max = i
max_k = s.count(i)
print(max)

23.

ОПЕРАЦИИ СО СПИСКАМИ. ЗАДАЧА 9
Дан список чисел. Посчитайте, сколько в нём пар
элементов, равных друг другу. Считается, что любые два
элемента, равные друг другу, образуют одну пару, которую
необходимо посчитать.
Решение:
a=input().split()
b=0
for i in range(len(a)):
for j in range(i+1,len(a)):
if a[i]==a[j]:
b+=1
print(b)

24.

ОПЕРАЦИИ СО СПИСКАМИ. ЗАДАЧА 10
Дан список чисел. В списке все элементы различны.
Поменяйте местами минимальный и максимальный
элемент этого списка.
Решение:
a=list(map(int, input().split()))
Imax=a.index(max(a))
Imin=a.index(min(a))
a[Imin], a[Imax]=a[Imax], a[Imin]
for i in range(len(a)):
print(a[i], end=’ ‘)

Задача » Самое частое число» (питон)

Дан список. Не изменяя его и не используя дополнительные списки, определите, какое число в этом списке встречается чаще всего.

Если таких чисел несколько, выведите любое из них.

Входные данные
Вводится список чисел. Все числа списка находятся на одной строке.

Выходные данные
Выведите ответ на задачу.

входные данные
1 2 3 2 3 3
выходные данные
3

Лучший ответ

ну, самый простой метод — «жадный»
s = [1,2,3,2,3,3]
max = s[0]
max_count = s.count(max)
for el in s:
__if s.count(el)>max_count:
____max = el
____max_count = s.count(el)
print(max)

оговорюсь что он простой, но не оптимальный.
Вообще, оптимальность тут зависит от количества элементов и их диапазона.
Например если в списке очень много элементов и большинство из них однотипно, то не нарушая условия (не создавать доп. списки) можно создать набор:
s = [1,2,3,4,3,3,3,2,2,1,5]
set_s = set(s)
max = set_s[0]
max_count = 1
for el in set_s:
__cut_count = s.count(el)
__if cur_count>max_count:
____max = s.count(el)
____max_count = cur_count
print(max)
-это позволит выполнять цикл подсчета только для уникальных элементов, а не всех из списка.

ну, в принципе можно много еще чего придумать.

Lex MinchenkovУченик (104) 1 год назад
Спасибо. Помогли разобраться.
Остальные ответы

правильное решение задачи, плюс проходит компиляцию

s = list(map(int, input().split()))
max = s[0]
max_count = s.count(max)
for el in s:
if s.count(el)>max_count:
max = el
max_count = s.count(el)
print(max)

Виктор РоговУченик (174) 2 года назад
можно объяснить пж
Rozimadlen HakobyanЗнаток (402) 2 года назад
А что считает max_count = s.count(max) и для чего? понять не могу

n=10
a=[]
for i in range(n):
a.append(int(input(«Введите элемент массива >>\n»)))
print(a)

count=1
maxcount=0
c=0
for i in range(0,n-1):
for j in range(i+1,n):
if a[i]==a[j]:
count+=1
if count>maxcount:
maxcount=count
c=a[i]
count=1
else:
count=1
print(c)

Дан список целых чисел определите какое число в этом списке встречается чаще всего

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

Раньше мы сталкивались с задачей обработки элементов последовательности, например, вычисляя наибольший элемент последовательности. Но при этом мы не сохраняли всю последовательность в памяти компьютера. Однако, во многих задачах нужно именно сохранять всю последовательность, например, если бы нам требовалось вывести все элементы последовательности в возрастающем порядке (“отсортировать последовательность”).

Для хранения таких данных можно использовать структуру данных, называемую в Питоне список (в большинстве же языков программирования используется другой термин “массив”). Список представляет собой последовательность элементов, пронумерованных от 0, как символы в строке. Список можно задать перечислением элементов списка в квадратных скобках, например, список можно задать так:

Primes = [2, 3, 5, 7, 11, 13] Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet']

В списке Primes — 6 элементов, а именно: Primes[0] == 2 , Primes[1] == 3 , Primes[2] == 5 , Primes[3] == 7 , Primes[4] == 11 , Primes[5] == 13 . Список Rainbow состоит из 7 элементов, каждый из которых является строкой.

Также как и символы в строке, элементы списка можно индексировать отрицательными числами с конца, например, Primes[-1] == 13 , Primes[-6] == 2 .

Длину списка, то есть количество элементов в нем, можно узнать при помощи функции len , например, len(Primes) == 6 .

В отличие от строк, элементы списка можно изменять, присваивая им новые значения.

Rainbow = ['Red', 'Orange', 'Yellow', 'Green', 'Blue', 'Indigo', 'Violet'] print(Rainbow[0]) Rainbow[0] = 'красный' print('Выведем радугу') for i in range(len(Rainbow)): print(Rainbow[i])

Рассмотрим несколько способов создания и считывания списков. Прежде всего, можно создать пустой список (не содержащий элементов, длины 0), а в конец списка можно добавлять элементы при помощи метода append . Например, пусть программа получает на вход количество элементов в списке n , а потом n элементов списка по одному в отдельной строке. Вот пример входных данных в таком формате:

5 1809 1854 1860 1891 1925

В этом случае организовать считывание списка можно так:

5 1809 1854 1860 1891 1925
a = [] # заводим пустой список n = int(input()) # считываем количество элемент в списке for i in range(n): new_element = int(input()) # считываем очередной элемент a.append(new_element) # добавляем его в список # последние две строки можно было заменить одной: # a.append(int(input())) print(a)

В этом примере создается пустой список, далее считывается количество элементов в списке, затем по одному считываются элементы списка и добавляются в его конец. То же самое можно записать, сэкономив переменную n :

5 1809 1854 1860 1891 1925
a = [] for i in range(int(input())): a.append(int(input())) print(a)

Для списков целиком определены следующие операции: конкатенация списков (сложение списков, т. е. приписывание к одному списку другого) и повторение списков (умножение списка на число). Например:

a = [1, 2, 3] b = [4, 5] c = a + b d = b * 3 print([7, 8] + [9]) print([0, 1] * 3)

В результате список c будет равен [1, 2, 3, 4, 5] , а список d будет равен [4, 5, 4, 5, 4, 5] . Это позволяет по-другому организовать процесс считывания списков: сначала считать размер списка и создать список из нужного числа элементов, затем организовать цикл по переменной i начиная с числа 0 и внутри цикла считывается i -й элемент списка:

5 1809 1854 1860 1891 1925
a = [0] * int(input()) for i in range(len(a)): a[i] = int(input())

Вывести элементы списка a можно одной инструкцией print(a) , при этом будут выведены квадратные скобки вокруг элементов списка и запятые между элементами списка. Такой вывод неудобен, чаще требуется просто вывести все элементы списка в одну строку или по одному элементу в строке. Приведем два примера, также отличающиеся организацией цикла:

a = [1, 2, 3, 4, 5] for i in range(len(a)): print(a[i])

Здесь в цикле меняется индекс элемента i , затем выводится элемент списка с индексом i .

a = [1, 2, 3, 4, 5] for elem in a: print(elem, end=' ')

В этом примере элементы списка выводятся в одну строку, разделенные пробелом, при этом в цикле меняется не индекс элемента списка, а само значение переменной (например, в цикле for elem in [‘red’, ‘green’, ‘blue’] переменная elem будет последовательно принимать значения ‘red’ , ‘green’ , ‘blue’ .

Обратите особое внимание на последний пример! Очень важная часть идеологии Питона — это цикл for , который предоставляет удобный способ перебрать все элементы некоторой последовательности. В этом отличие Питона от Паскаля, где вам обязательно надо перебирать именно индексы элементов, а не сами элементы.

Последовательностями в Питоне являются строки, списки, значения функции range() (это не списки), и ещё кое-какие другие объекты.

Приведем пример, демонстрирующий использование цикла for в ситуации, когда из строки надо выбрать все цифры и сложить их в массив как числа.

# дано: s = 'ab12c59p7dq' # надо: извлечь цифры в список digits, # чтобы стало так: # digits == [1, 2, 5, 9, 7] s = 'ab12c59p7dq' digits = [] for symbol in s: if '1234567890'.find(symbol) != -1: digits.append(int(symbol)) print(digits)

2. Методы split и join

Элементы списка могут вводиться по одному в строке, в этом случае строку целиком можно считать функцией input() . После этого можно использовать метод строки split() , возвращающий список строк, которые получатся, если исходную строку разрезать на части по пробелам. Пример:

1 2 3
# на вход подаётся строка # 1 2 3 s = input() # s == '1 2 3' a = s.split() # a == ['1', '2', '3']

Если при запуске этой программы ввести строку 1 2 3 , то список a будет равен [‘1’, ‘2’, ‘3’] . Обратите внимание, что список будет состоять из строк, а не из чисел. Если хочется получить список именно из чисел, то можно затем элементы списка по одному преобразовать в числа:

1 2 3
a = input().split() for i in range(len(a)): a[i] = int(a[i])

Используя специальную магию Питона — генераторы — то же самое можно сделать в одну строку:

1 2 3
a = [int(s) for s in input().split()]

Объяснение того, как работает этот код, будет дано в следующем разделе. Если нужно считать список действительных чисел, то нужно заменить тип int на тип float .

У метода split() есть необязательный параметр, который определяет, какая строка будет использоваться в качестве разделителя между элементами списка. Например, вызов метода split(‘.’) вернет список, полученный разрезанием исходной строки по символам ‘.’ :

a = '192.168.0.1'.split('.')

В Питоне можно вывести список строк при помощи однострочной команды. Для этого используется метод строки join . У этого метода один параметр: список строк. В результате возвращается строка, полученная соединением элементов переданного списка в одну строку, при этом между элементами списка вставляется разделитель, равный той строке, к которой применяется метод. Мы знаем, что вы не поняли предыдущее предложение с первого раза. Поэтому смотрите примеры:

a = ['red', 'green', 'blue'] print(' '.join(a)) # вернёт red green blue print(''.join(a)) # вернёт redgreenblue print('***'.join(a)) # вернёт red***green***blue

Если же список состоит из чисел, то придется использовать еще тёмную магию генераторов. Вывести элементы списка чисел, разделяя их пробелами, можно так:

a = [1, 2, 3] print(' '.join([str(i) for i in a])) # следующая строка, к сожалению, вызывает ошибку: # print(' '.join(a))

Впрочем, если вы не любитель тёмной магии, то вы можете достичь того же эффекта, используя цикл for .

3. Генераторы списков

Для создания списка, заполненного одинаковыми элементами, можно использовать оператор повторения списка, например:

n = 5 a = [0] * n

Для создания списков, заполненных по более сложным формулам можно использовать генераторы: выражения, позволяющие заполнить список некоторой формулой. Общий вид генератора следующий:

[выражение for переменная in последовательность]

где переменная — идентификатор некоторой переменной, последовательность — последовательность значений, который принимает данная переменная (это может быть список, строка или объект, полученный при помощи функции range ), выражение — некоторое выражение, как правило, зависящее от использованной в генераторе переменной, которым будут заполнены элементы списка.

Вот несколько примеров использования генераторов.

Создать список, состоящий из n нулей можно и при помощи генератора:

a = [0 for i in range(5)]

Создать список, заполненный квадратами целых чисел можно так:

n = 5 a = [i ** 2 for i in range(n)]

Если нужно заполнить список квадратами чисел от 1 до n , то можно изменить параметры функции range на range(1, n + 1) :

n = 5 a = [i ** 2 for i in range(1, n + 1)]

Вот так можно получить список, заполненный случайными числами от 1 до 9 (используя функцию randrange из модуля random ):

from random import randrange n = 10 a = [randrange(1, 10) for i in range(n)]

А в этом примере список будет состоять из строк, считанных со стандартного ввода: сначала нужно ввести число элементов списка (это значение будет использовано в качестве аргумента функции range ), потом — заданное количество строк:

5 a b 1 2 3
a = [input() for i in range(int(input()))]

4. Срезы

Со списками, так же как и со строками, можно делать срезы. А именно:

A[i:j] срез из j-i элементов A[i] , A[i+1] , . A[j-1] .

A[i:j:-1] срез из i-j элементов A[i] , A[i-1] , . A[j+1] (то есть меняется порядок элементов).

A[i:j:k] срез с шагом k : A[i] , A[i+k] , A[i+2*k] . . Если значение k

Каждое из чисел i или j может отсутствовать, что означает “начало строки” или “конец строки”

Списки, в отличии от строк, являются изменяемыми объектами: можно отдельному элементу списка присвоить новое значение. Но можно менять и целиком срезы. Например:

A = [1, 2, 3, 4, 5] A[2:4] = [7, 8, 9]

Получится список, у которого вместо двух элементов среза A[2:4] вставлен новый список уже из трех элементов. Теперь список стал равен [1, 2, 7, 8, 9, 5] .

A = [1, 2, 3, 4, 5, 6, 7] A[::-2] = [10, 20, 30, 40]

Получится список [40, 2, 30, 4, 20, 6, 10] . Здесь A[::-2] — это список из элементов A[-1] , A[-3] , A[-5] , A[-7] , которым присваиваются значения 10, 20, 30, 40 соответственно.

Если не непрерывному срезу (то есть срезу с шагом k , отличному от 1), присвоить новое значение, то количество элементов в старом и новом срезе обязательно должно совпадать, в противном случае произойдет ошибка ValueError .

Обратите внимание, A[i] — это элемент списка, а не срез!

Операции со списками

Со списками можно легко делать много разных операций.

x in A Проверить, содержится ли элемент в списке. Возвращает True или False
x not in A То же самое, что not(x in A)
min(A) Наименьший элемент списка
max(A) Наибольший элемент списка
A.index(x) Индекс первого вхождения элемента x в список, при его отсутствии генерирует исключение ValueError
A.count(x) Количество вхождений элемента x в список

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *