Книга программиста/Обработка списков на Python: различия между версиями
Содержимое удалено Содержимое добавлено
Нет описания правки |
|||
Строка 1: | Строка 1: | ||
Все программы, код которых выложен здесь, '''являются работоспособными'''. |
Все программы, код которых выложен здесь, '''являются работоспособными'''. |
||
=Сортировки= |
=Сортировки= |
||
==Сортировка пузырьком== |
|||
<source lang="python"> |
|||
import random |
|||
N = 10 |
|||
L = list() |
|||
for i in range(N): |
|||
L.append(random.randint(0, 100)) |
|||
print(L) |
|||
for j in range(N - 1, 0, -1): |
|||
for i in range(j): |
|||
if L[i] > L[i + 1]: |
|||
L[i], L[i + 1] = L[i + 1], L[i] |
|||
print(L) |
|||
</source> |
|||
==Сортировка выбором== |
|||
<source lang="python"> |
|||
import random |
|||
N = 10 |
|||
L = list() |
|||
for i in range(N): |
|||
L.append(random.randint(0, 100)) |
|||
print(L) |
|||
for i in range(N): |
|||
for j in range(i + 1, N): |
|||
if L[i] > L[j]: |
|||
L[i], L[j] = L[j], L[i] |
|||
print(L) |
|||
</source> |
|||
==Сортировка вставками== |
|||
<source lang="python"> |
|||
import random |
|||
N = 10 |
|||
L = list() |
|||
for i in range(N): |
|||
L.append(random.randint(0, 100)) |
|||
j = i |
|||
while (j > 0) and (L[j - 1] > L[j]): |
|||
L[j - 1], L[j] = L[j], L[j - 1] |
|||
j -= 1 |
|||
print(L) |
|||
</source> |
|||
=Более сложные задачи= |
=Более сложные задачи= |
||
==Исключение одинаковых элементов списка== |
==Исключение одинаковых элементов списка== |
Версия от 10:35, 2 сентября 2017
Все программы, код которых выложен здесь, являются работоспособными.
Сортировки
Сортировка пузырьком
import random
N = 10
L = list()
for i in range(N):
L.append(random.randint(0, 100))
print(L)
for j in range(N - 1, 0, -1):
for i in range(j):
if L[i] > L[i + 1]:
L[i], L[i + 1] = L[i + 1], L[i]
print(L)
Сортировка выбором
import random
N = 10
L = list()
for i in range(N):
L.append(random.randint(0, 100))
print(L)
for i in range(N):
for j in range(i + 1, N):
if L[i] > L[j]:
L[i], L[j] = L[j], L[i]
print(L)
Сортировка вставками
import random
N = 10
L = list()
for i in range(N):
L.append(random.randint(0, 100))
j = i
while (j > 0) and (L[j - 1] > L[j]):
L[j - 1], L[j] = L[j], L[j - 1]
j -= 1
print(L)
Более сложные задачи
Исключение одинаковых элементов списка
import random
N = 10
L, Exists = list(), list()
for i in range(N):
L.append(random.randint(0, 10))
Exists.append(True)
print('Изначальный список:')
print(L)
for i in range(N):
if Exists[i]:
for j in range(i + 1, N):
if L[j] == L[i]:
Exists[j] = False
print('Изменённый список:')
for i in range(N):
if Exists[i]:
print(str(L[i]) + ' ')
Максимальные элементы столбцов
import random
N = 4
L = []
Max = list()
for i in range(N):
L.append([])
Max.append(-10000)
for j in range(N):
L[i].append(random.randint(0, 100))
print('Матрица:')
for i in range(N):
print(L[i])
for j in range(N):
for i in range(N):
if L[i][j] > Max[j]:
Max[j] = L[i][j]
print('Максимумы:')
print(Max)
Минимальные элементы на пересечении строк и столбцов
import random
def Print(l):
print('Матрица:')
for i in range(len(l)):
print(l[i])
N = 4
L = []
for i in range(N):
L.append([])
for j in range(N):
L[i].append(random.randint(0, 10))
Print(L)
MinI = 0
MinJ = 0
Min = 0
Found = False
for i in range(N):
Min = 10000
Found = True
for j in range(N):
if L[i][j] < Min:
Min = L[i][j]
MinI = i
MinJ = j
for i2 in range(N):
if L[i2][MinJ] < Min:
Found = False
if Found:
break
if not Found:
print('Минимального элемента на пересечении строк и столбцов не найдено.')
else:
print('Индексы минимального элемента {0} равны [{1}, {2}].'.format(Min, MinI, MinJ))
Двузначные числа, кратные 2
import math, random
def Print(l):
print('Матрица:')
for i in range(len(l)):
print(l[i])
N = 4
L = []
for i in range(N):
L.append([])
for j in range(N):
L[i].append(random.randint(0, 100))
Print(L)
C = 0
for i in range(N):
for j in range(N):
s = 0
b = L[i][j]
while b != 0:
s += b % 10
b = b // 10
if (math.fabs(L[i][j]) >= 10) and (math.fabs(L[i][j]) < 100) and (s % 2 == 0):
C += 1
print('Количество двузначных чисел с четной суммой цифр равно {0}.'.format(C))
Поменять местами строки двумерного списка
import random
def Print(l):
print('Матрица:')
for i in range(len(l)):
print(l[i])
N = 4
L = []
for i in range(N):
L.append([])
for j in range(N):
L[i].append(random.randint(0, 100))
Print(L)
N2 = N - 1
i1 = random.randint(0, N2)
i2 = random.randint(0, N2)
for j in range(N):
L[i1][j], L[i2][j] = L[i2][j], L[i1][j]
Print(L)
Совершенные числа
L = list()
for a in range(1, 1001):
S = 0
for k in range(1, a):
if a % k == 0:
S += k
if S == a:
L.append(a)
print(L)