Книга программиста/Обработка списков на Python: различия между версиями

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
Строка 177: Строка 177:


print(L)
print(L)
</source>

=Исключение одинаковых элементов списка=
<source lang="python">

</source>
</source>

Версия от 10:31, 2 сентября 2017

Все программы, код которых выложен здесь, являются работоспособными. На момент написания программ использовалась среда PascalABC.Net 3.0.

Исключение одинаковых элементов списка

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)