2010-08-02 1 views

ответ

226
keep.update(yoursequenceofvalues) 

например, keep.update(xrange(11)) для вашего конкретного примера. Или, если вы имеют для получения значений в цикле по какой-то другой причине,

for ...whatever...: 
    onemorevalue = ...whatever... 
    keep.add(onemorevalue) 

Но, конечно, делать это в объеме с помощью одного .update вызова быстрее и удобней, когда в противном случае возможно.

+15

'.add' добавляет один элемент,' .update' добавляет несколько элементов. Это верно? – ThorSummoner

+3

@ThorSummoner Да. '.add' ожидает единственный хешируемый тип, в то время как' .update' ожидает итеративный объект – Bonnie

+0

Если вы добавите строку с обновлением, она добавит по одному элементу на символ в вашей строке, потому что это итерабельный! – hgolov

32

Использование update так:

keep.update(newvalues) 
63

Вы также можете использовать оператор | для объединения двух наборов (накидные в теории множеств):

>>> my_set = {1} 
>>> my_set = my_set | {2} 
>>> my_set 
{1, 2} 

Или короче формы с помощью |=:

>>> my_set |= {2} 
>>> my_set 
{1, 2} 

Примечание: В версиях до Python 2.7 используйте set([...]) вместо {...}.

+0

Если у вас есть список наборов 'my_sets', вы можете сделать' big_set = my_sets [0] .union (* my_sets [1:]) ', чтобы объединить их все – zelusp

133

Определить набор

a = set() 

Использования добавить, чтобы добавить отдельные значения

a.add(1) 
a.add(2) 

Используйте обновление для добавления итерации значения

a.update([3,4]) 

Проверьте вашу коллекцию

a 
Out[*n*]: {1, 2, 3, 4} 

Вот и все - помните, обновление, если оно итерируется (aka list или tuple) или добавить если нет. Счастливое кодирование!