Python'da bir kümeye değer ekleme


Yanıtlar:


405
keep.update(yoursequenceofvalues)

örneğin, keep.update(xrange(11))özel örneğiniz için. Veya, eğer varsa başka bir nedenden dolayı bir döngü içinde değerlerini üretmek için,

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

Ancak, elbette, tek bir .updateçağrı ile toplu olarak yapmak , aksi takdirde mümkün olduğunda daha hızlı ve daha elverişlidir.


78
.addtek bir öğe .updateekler, birkaç öğe ekler. Bu doğru mu?
ThorSummoner

16
@ThorSummoner Evet, .addtek bir yıkanabilir tip .updatebeklerken, yinelenebilir bir nesne bekliyor
Bonnie

4
Güncellemeli bir dize eklerseniz, dizenizdeki karakter başına bir öğe eklenebilir çünkü bu yinelenebilir!
hgolov

2
Dizelerin "bütün" nesneler olarak eklenmesi gerektiğine dikkat etmek önemlidir .add, değil .update, son zamanlarda bu küçük detay nedeniyle oldukça sinsi bir hatayla karşılaştım.
lalilulelost

277

Kümeyi tanımla

a = set()

Tek değerler eklemek için ekle seçeneğini kullanın

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

Tuples, kümeler, listeler veya dondurulmuş kümelerden eleman eklemek için güncellemeyi kullanın

a.update([3,4])

>> print(a)
{1, 2, 3, 4}

Bir tuple veya dondurulmuş küme eklemek istiyorsanız, add

a.add((5, 6))

>> print(a)
{1, 2, 3, 4, (5, 6)}

Not: Ayarlanan öğelerin yıkanabilir olması gerektiğinden ve listeler değiştirilebilir olarak kabul edildiğinden, bir gruba liste ekleyemezsiniz. Bir kümeye başka kümeler de ekleyemezsiniz. Bununla birlikte, ".update" yöntemiyle gösterildiği gibi listelerden ve kümelerden öğeleri ekleyebilirsiniz.


105

|Operatörü, iki seti birleştirmek için de kullanabilirsiniz ( set teorisinde birleşim ):

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

Veya aşağıdakileri kullanarak daha kısa bir form |=:

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

Not: Python 2.7'den önceki sürümlerde, set([...])yerine kullanın {...}.


1
Eğer bir takım listeniz my_setsvarsa, big_set = my_sets[0].union(*my_sets[1:])hepsini birleştirmek için yapabilirsiniz
zelusp

45

Bunun updategibi kullanın :

keep.update(newvalues)

10

Bu soru, Google'da "ayarlanacak öğeleri nasıl ekleyeceğimize" bakıldığında ortaya çıkan ilk sorudur, bu nedenle bir kümeye bütün bir dize eklemek istiyorsanız .add(), değil .update().

foo_strİçeriği olan bir dizeniz olduğunu 'this is a sentence've bazılarının bar_seteşit olduğu bir dizeniz olduğunu varsayalımset() .

Bunu yaparsanız bar_set.update(foo_str), setinizin içeriği olacaktır {'t', 'a', ' ', 'e', 's', 'n', 'h', 'c', 'i'}.

Bunu yaparsanız bar_set.add(foo_str), setinizin içeriği olacaktır {'this is a sentence'}.


3

Bunu yapmak istediğim yol, hem orijinal kümeyi hem de listelere eklemek istediğim değerleri dönüştürmek, eklemek ve sonra bunları aşağıdaki gibi bir kümeye dönüştürmektir:

setMenu = {"Eggs", "Bacon"}
print(setMenu)
> {'Bacon', 'Eggs'}
setMenu = set(list(setMenu) + list({"Spam"}))
print(setMenu)
> {'Bacon', 'Spam', 'Eggs'}
setAdditions = {"Lobster", "Sausage"}
setMenu = set(list(setMenu) + list(setAdditions))
print(setMenu)
> {'Lobster', 'Spam', 'Eggs', 'Sausage', 'Bacon'}

Bu şekilde kolayca aynı mantığı kullanarak birden çok set ekleyebilirim, bu yöntemle TypeError: unhashable type: 'set'yapmaya çalışırsam beni alır .update().


2
keep.update((0,1,2,3,4,5,6,7,8,9,10))

Veya

keep.update(np.arange(11))

0

Benim için Python 3'te, bu şekilde çalışıyor:

keep = keep.union((0,1,2,3,4,5,6,7,8,9,10))

Doğru olup olmadığını bilmiyorum ...

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.