Telegram Group & Telegram Channel
Set - это множество, в котором элементы не имеют порядок.
Т.е. порядок не гарантируется, но порядок в них не случайный и зная детали реализации можно предположить в каком порядке они будут выведены (при итерации).

Так почему же в нашем случае элементы будут отсортированы?
В множестве элементы лежат не в случайном порядке, а в порядке возрастания хэш-значения % длина списка.
Как работает set?
Внутри мы имеем тот же список и мы так же хотим получать элементы по индексам (потому что это быстро).
Но как получить индекс?

Берем hash(element) чтобы получить хэш-значение элемента, у нас это int, а как мы ранее выяснили hash(int) -> int.
Далее, чтобы получить индекс мы берем остаток от деления этого хэш-значения на длину (реальную, а не заполненную) списка внутри сета.

Когда мы объявляем пустое множество, то длина по умолчанию равна 8.

Т.е. если мы объявим такой сет, то он сохранится грубо говоря в таком виде:
s = {2, 3, 1, 5}
# [NULL, 1, 2, 3, NULL, 5, NULL, NULL]
# 2 - hash(2) = 2, 2 % 8 = 2 (индекс в списке)
# 3 - hash(3) = 3, 3 % 8 = 3 (индекс в списке)
# 1 - hash(1) = 1, 1 % 8 = 1 (индекс в списке)
# 5 - hash(5) = 5, 5 % 8 = 5 (индекс в списке)

А чтобы преобразовать все set в list, мы должны пробежаться по всем индексам и вытащить оттуда не NULL значения.
Вот и получается, что:
list(s) == [1, 2, 3, 8] # True

Это работает только с числами, которые меньше длины списка. Допустим у нас:
s = {2, 3, 1, 8}
# [8, 1, 2, 3, NULL, NULL, NULL, NULL]
# 2 - hash(2) = 2, 2 % 8 = 2 (индекс в списке)
# 3 - hash(3) = 3, 3 % 8 = 3 (индекс в списке)
# 1 - hash(1) = 1, 1 % 8 = 1 (индекс в списке)
# 8 - hash(8) = 8, 8 % 8 = 0 (индекс в списке)
list(s) == [1, 2, 3, 8] # уже False

Никогда не надейтесь на порядок в множествах, этот код чисто для примера и объяснения.
Начальный размер множества (списка под копотом) 8, но как только мы заполняем 2/3 от 8, то размер увеличивается в 4 раза, а точнее.
В 4 раза - если элементов в множестве меньше 50000.
В 2 раза - если больше 50000.

Все эти параметры и числа могут меняться в будущем.

#set



tg-me.com/pythrone/12
Create:
Last Update:

Set - это множество, в котором элементы не имеют порядок.
Т.е. порядок не гарантируется, но порядок в них не случайный и зная детали реализации можно предположить в каком порядке они будут выведены (при итерации).

Так почему же в нашем случае элементы будут отсортированы?
В множестве элементы лежат не в случайном порядке, а в порядке возрастания хэш-значения % длина списка.
Как работает set?
Внутри мы имеем тот же список и мы так же хотим получать элементы по индексам (потому что это быстро).
Но как получить индекс?

Берем hash(element) чтобы получить хэш-значение элемента, у нас это int, а как мы ранее выяснили hash(int) -> int.
Далее, чтобы получить индекс мы берем остаток от деления этого хэш-значения на длину (реальную, а не заполненную) списка внутри сета.

Когда мы объявляем пустое множество, то длина по умолчанию равна 8.

Т.е. если мы объявим такой сет, то он сохранится грубо говоря в таком виде:

s = {2, 3, 1, 5}
# [NULL, 1, 2, 3, NULL, 5, NULL, NULL]
# 2 - hash(2) = 2, 2 % 8 = 2 (индекс в списке)
# 3 - hash(3) = 3, 3 % 8 = 3 (индекс в списке)
# 1 - hash(1) = 1, 1 % 8 = 1 (индекс в списке)
# 5 - hash(5) = 5, 5 % 8 = 5 (индекс в списке)

А чтобы преобразовать все set в list, мы должны пробежаться по всем индексам и вытащить оттуда не NULL значения.
Вот и получается, что:
list(s) == [1, 2, 3, 8] # True

Это работает только с числами, которые меньше длины списка. Допустим у нас:
s = {2, 3, 1, 8}
# [8, 1, 2, 3, NULL, NULL, NULL, NULL]
# 2 - hash(2) = 2, 2 % 8 = 2 (индекс в списке)
# 3 - hash(3) = 3, 3 % 8 = 3 (индекс в списке)
# 1 - hash(1) = 1, 1 % 8 = 1 (индекс в списке)
# 8 - hash(8) = 8, 8 % 8 = 0 (индекс в списке)
list(s) == [1, 2, 3, 8] # уже False

Никогда не надейтесь на порядок в множествах, этот код чисто для примера и объяснения.
Начальный размер множества (списка под копотом) 8, но как только мы заполняем 2/3 от 8, то размер увеличивается в 4 раза, а точнее.
В 4 раза - если элементов в множестве меньше 50000.
В 2 раза - если больше 50000.

Все эти параметры и числа могут меняться в будущем.

#set

BY PyThrone




Share with your friend now:
tg-me.com/pythrone/12

View MORE
Open in Telegram


telegram Telegram | DID YOU KNOW?

Date: |

What is Telegram?

Telegram’s stand out feature is its encryption scheme that keeps messages and media secure in transit. The scheme is known as MTProto and is based on 256-bit AES encryption, RSA encryption, and Diffie-Hellman key exchange. The result of this complicated and technical-sounding jargon? A messaging service that claims to keep your data safe.Why do we say claims? When dealing with security, you always want to leave room for scrutiny, and a few cryptography experts have criticized the system. Overall, any level of encryption is better than none, but a level of discretion should always be observed with any online connected system, even Telegram.

Telegram auto-delete message, expiring invites, and more

elegram is updating its messaging app with options for auto-deleting messages, expiring invite links, and new unlimited groups, the company shared in a blog post. Much like Signal, Telegram received a burst of new users in the confusion over WhatsApp’s privacy policy and now the company is adopting features that were already part of its competitors’ apps, features which offer more security and privacy. Auto-deleting messages were already possible in Telegram’s encrypted Secret Chats, but this new update for iOS and Android adds the option to make messages disappear in any kind of chat. Auto-delete can be enabled inside of chats, and set to delete either 24 hours or seven days after messages are sent. Auto-delete won’t remove every message though; if a message was sent before the feature was turned on, it’ll stick around. Telegram’s competitors have had similar features: WhatsApp introduced a feature in 2020 and Signal has had disappearing messages since at least 2016.

telegram from cn


Telegram PyThrone
FROM USA