1. 程式人生 > >Python中的set

Python中的set

set_lst = [

  ('集合容器不可雜湊',),

  ('集合中的元素可雜湊',),

  ('集合自動去重',),

  ('增',),

  ('刪',),

  ('查',),

  ('集合運算',),

  ('練習',),

]

 

集合容器不可雜湊

  >>>hash(set())

  TypeError: unhashable type: 'set'

集合中的元素可雜湊

  >>>hash(list({1, 2})[0])

  1

集合自動去重

  >>>num_set = {1, 1}

  >>>num_set

  1

  >>>num_set = {1, 2}

  >>>num_set.add(3)

  >>>num_set

  {1, 2, 3}

  >>>num_set.update([4, 5])

  >>>num_set

  {1, 2, 3, 4, 5}

  set.pop()理論上是隨機移除集合中的某一元素,但我在直譯器裡試了4次,都是移除了集合中的第一個元素(PS: Python 3.6.2)

  

  

  >>>num_set = {1, 2, 3, 4, '5', 6}

  >>>num_set.pop()

  1

  >>>num_set.remove('5')

  >>>num_set

  {2, 3, 4, 6}

  >>>num_set.clear()

  >>>num_set

  set()

  >>>del num_set

  >>>num_set

  NameError: name 'num_set' is not defined

  >>>num_set = {1, 2}

  >>>for i in num_set:

  ...  i

  ...

  1

  2

集合運算

  >>>set_1 = {1, 2, 3, 4}

  >>>set_2 = {4, 5, 6, 7}

  交集

    >>>set_1 & set_2

    {4}

  並集

    >>>set_1 | set_2

    {1, 2, 3, 4, 5, 6, 7, 8}

  反交集

    >>>set_1 ^ set_2

    {1, 2, 3, 5, 6, 7, 8}

  差集

    >>>set_1 - set_2

    {1, 2, 3}

  子集與超集

    >>>set_1 < set_2

    False

    >>>set_1 > set_2

    False

 

練習

  運用集合的知識為列表去重

    >>>lst = [1, 1, 2, 2, 3, 4]

    >>>lst = list(set(lst))

    >>>lst

    [1, 2, 3, 4]