Доступ к единственному элементу набора
У меня есть set
в Python, из которого я удаляю элементы один за другим на основе условия. Когда набор остается только с одним элементом, мне нужно вернуть этот элемент. Как получить доступ к этому элементу из набора?
Упрощенный пример:
S = set(range(5))
for i in range(4):
S = S - {i}
# now S has only 1 element: 4
return ? # how should I access this element
# a lame way is the following
# for e in S:
# return S
Ответы
Ответ 1
Используйте set.pop
:
>>> {1}.pop()
1
>>>
В вашем случае это будет:
return S.pop()
Обратите внимание, что это приведет к удалению элемента из набора. Если это нежелательно, вы можете использовать min
| max
:
return min(S) # 'max' would also work here
Демо:
>>> S = {1}
>>> min(S)
1
>>> S
set([1])
>>> max(S)
1
>>> S
set([1])
>>>
Ответ 2
Я бы использовал:
e = next(iter(S))
Это неразрушающий и работает, даже если в наборе имеется более одного элемента. Еще лучше, у него есть возможность указать значение по умолчанию e = next(iter(S), default)
.
Вы также можете использовать распаковку:
[e] = S
Метод распаковки, вероятно, будет самым быстрым способом, и он включает проверку ошибок, чтобы убедиться, что в наборе имеется только один элемент. Недостатком является то, что это выглядит странно.
Ответ 3
Извините, поздно на вечеринку. Чтобы получить доступ к элементу из набора, вы всегда можете включить набор в список, а затем вы можете использовать индексирование для возврата нужного значения.
В случае вашего примера:
return list(S)[0]
Ответ 4
Вы можете назначить последний элемент переменной, используя star operation
.
>>> a={"fatih"}
>>> b=str(*a)
>>> b
'fatih'
Теперь переменная b
имеет string object
.
Если единственным элементом является число, вы можете использовать int()
:
>>> a={1}
>>> c=int(*a)
>>> c
1