Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Множество, состоящее из кортежей

Александр Снигирев Ученик (113), закрыт 9 месяцев назад
Изучаю сейчас python по книге васильева и в теме множества. В заданиях для самостоятельной работы есть задание: " напишите программу для создания множества, элементами которого являются кортежи(по 2 элемента в каждом) с нечетными числами: (1 , 3), (3 , 5), (5 , 7) итд."
так вот, написал я програмку следующего вида:

i = 5

resSet = set()
k=1
for j in range(i):
tupleR = (k,k+2)
resSet.add(tupleR)
k+=2
print(resSet)

выполняю, и в результат выходит {(5, 7), (7, 9), (9, 11), (1, 3), (3, 5)}

дебажил уже, (1, 3), (3, 5) идет нормально, а вот с (5, 7) начинается какая то логика вообще непонятная мне:
1)при добавлении (5, 7) в сет, получаем (5, 7), (1, 3), (3, 5)
2)при добавлении (7,9) получаем (7,9), (5, 7), (1, 3), (3, 5) тут еше вижу какую то логику
3)но как только добавляем (9,11) мы получаем не (9,11) (7,9), (5, 7), (1, 3), (3, 5), а (5, 7), (7,9), (9,11), (1, 3), (3, 5)
Можете пожалуйста объяснить по какой логике оно работает и как можно реализовать то, что требует автор
Лучший ответ
Андрей Высший разум (427994) 1 год назад
А математику учить не пробовал - которая объясняет свойства математического объекта "множество"?

Множество - это НЕУПОРЯДОЧЕННЫЙ набор значений. НЕ ВАЖНО, в каком порядке элементы перечисляются при итерации по множеству. И ты НИКАК не можешь управлять этим порядком. Python сам решает, в каком именно порядке значения будут перечислены.
 i = 5
resSet = {(k, k + 2) for k in range(1, i * 2, 2)}
Александр СнигиревУченик (113) 1 год назад
это то я понимаю, однако другой вопрос, че тогда от меня автор то хочет)
Андрей Высший разум (427994) Александр Снигирев, Не читал. Но, полагаю, автор хочет получить заданный забор кортежей - НЕЗАВИСИМО от того, в каком порядке эти кортежи перечислены при выводе.
Остальные ответы
Professional Professional Мудрец (15234) 1 год назад
main_set = set([])

for i in range(1, 100, 2):
main_set.add((i, i+2))

print(main_set)
Александр СнигиревУченик (113) 1 год назад
благополучно позаимствовал этот код, получается то же самое, что и у меня, только в пределах 100))
Похожие вопросы