Главная страница

62. Массивы 63. Алгоритмы обработки массивов


Скачать 1.09 Mb.
Название 62. Массивы 63. Алгоритмы обработки массивов
Дата28.04.2023
Размер1.09 Mb.
Формат файлаpptx
Имя файлаprogrammirovanie-na-yazyke-python.pptx
ТипДокументы
#1095573
страница4 из 16
1   2   3   4   5   6   7   8   9   ...   16

Реверс массива




for i in range(N//2):

c = A[i]

A[i] = A[N-1-i]

A[N-1-i] = c

Варианты в стиле Python:

for i in range(N//2):

A[i], A[N-i-1]= A[N-i-1], A[i]

A.reverse()

Циклический сдвиг элементов


0

1

2

3

N-4

N-3

N-2

N-1

12

5

8

15

34

40

23

7



0

1

2

3

N-4

N-3

N-2

N-1

7

12

5

8

18

34

40

23

«Простое» решение:

c = A[0]

for i in range(N-1):

A[i] = A[i+1]

A[N-1] = c

Что плохо?

?

Почему не до N?

?

Срезы в Python




0

1

2

3

N-4

N-3

N-2

N-1

7

12

5

8

18

34

40

23

0

1

2

3

N-4

N-3

N-2

N-1

N

A[1:3]

[12, 5]

A[2:3]

[5]

A[:3]

[7, 12, 5]

A[0:3]

с начала

A[3:N-2]

[8,…,18,34]

разрезы

A[3:]

[8,…,18,34,40,23]

A[3:N]

до конца

A[:]

[7,12,5,8,…,18,34,40,23]

копия массива

Срезы в Python – отрицательные индексы




0

1

2

3

N-4

N-3

N-2

N-1

7

12

5

8

18

34

40

23

0

1

2

3

N-4

N-3

N-2

N-1

N

A[1:-1]

[12,5,8,…,18,34,40]

разрезы

A[1:N-1]

A[-4:-2]

[18, 34]

A[N-4:N-2]

Срезы в Python – шаг




0

1

2

3

4

5

6

7

8

7

12

5

8

76

18

34

40

23

0

1

2

3

4

5

6

7

8

9

A[1:6:2]

[12, 8, 18]

разрезы

A[::3]

[7, 8, 34]

A[8:2:-2]

[23, 34, 76]

A[::-1]

[23,40,34,18,76,8,5,12,7]

реверс!

A.reverse()

шаг
1   2   3   4   5   6   7   8   9   ...   16


написать администратору сайта