Книга программиста/Обработка списков на Python: различия между версиями
Содержимое удалено Содержимое добавлено
Строка 61: | Строка 61: | ||
=Более сложные задачи= |
=Более сложные задачи= |
||
==Исключение одинаковых элементов списка== |
==Исключение одинаковых элементов списка== |
||
'''Exists''' - список, который хранит булевы значения для указания того, что некоторый i-ый элемент должен быть в списке. |
|||
<source lang="python"> |
<source lang="python"> |
||
import random |
import random |
Версия от 11:28, 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)
Более сложные задачи
Исключение одинаковых элементов списка
Exists - список, который хранит булевы значения для указания того, что некоторый i-ый элемент должен быть в списке.
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)