Сохраняет ли HashSet порядок вставки *, если ни один элемент не удален *

Хотя оба вышеперечисленных ответа хороши, процедура извлечения частей объектов более общая.

Во многих случаях функции возвращают списки, а к отдельным компонентам можно получить доступ с помощью str(), которые будет печатать компоненты вместе с их именами. Затем вы можете получить к ним доступ с помощью оператора $, то есть myobject$componentname.

В случае объектов lm существует ряд предопределенных методов, которые можно использовать, например coef(), resid(), summary() и т. д., но вам не всегда будет так повезло.

-2
задан JonU 18 January 2019 в 10:12
поделиться

1 ответ

При этом меня интересует, поддерживается ли порядок вставки, когда в текущей реализации не происходит удаления.

Да, поддерживается в 4.7.2. По состоянию на 18 января 2019 года.

Я подозреваю, что частью проблемы здесь является понимание разницы между контрактом и реализацией.

Реализация из HashSet в 4.7.2 будет поддерживать порядок вставки (если вы не удаляете элементы). Но вы изначально не спрашивали об этом. Вы спросили:

порядок вставки гарантирован

И на этот вопрос однозначный ответ. Нет. Не гарантированы гарантии метода по реализации, но по договору. И контракт гласит:

Набор - это коллекция, которая не содержит повторяющихся элементов и элементы которой не имеют определенного порядка.

Просто нет способа прочитать это утверждение в каким-либо другим способом , кроме того, что нет гарантий относительно порядка.

Теперь - вы можете игнорировать гарантии и развертывать приложение, основываясь на текущем поведении. И до тех пор, пока Microsoft не выпустит исправление Windows Update, которое изменяет поведение (или ваш код работает в другой реализации, такой как Mono и т. Д.), Вы, вероятно, будете в порядке. Но , вероятно, не совпадает с , определенно (или гарантировано ).

0
ответ дан mjwills 18 January 2019 в 10:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: