python数据类型(集合)

Python011

python数据类型(集合),第1张

    1.集合(set)是一个无序不重复元素的序列(意思是有重复的会自动删除,每次打印元素的位置不一定)

    2.基本功能是进行成员关系测试和删除重复元素

    3.可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典

    4.因为set存储的是无序集合,所以我们没法通过索引来访问。访问 set中的某个元素实际上就是判断一个元素是否在set中。

1.创建集合

s=set()#创建一个空集合

s1={1,2,3,'a','python'}

2.删除重复的元素

集合是一个无序不重复元素的序列(意思是有重复的会自动删除,每次打印元素的位置不一定)

3.成员关系测试(检测某个成员是否在集合中)

案例:从终端输入5位数,以空格隔开,把这5位数存入列表中,剔除重复的数据,打印出来

#提示,列表转集合,集合转列表

a=input("请输入5位数字:")

mylist=a.split()

print(mylist)

b=set(mylist)

c=list(b)

print(c)

4.集合常用操作

    1.添加元素

    2.删除元素

    3.删除整个集合

    4.获取集合的长度

    5.不支持改元素

集合操作-添加元素

格式:

集合.add(元素)

格式:

集合.update(元素)

区别:

add不能添加列表,update可以

update是将字符串中的拆分成字符进行追加

add,是当做整体追加在集合中

#案例:从终端输入一个数字就加入集合中,然后打印,又输入一个数字,然后打印,直到输入-1,退出输入

#然后打印最终的集合

ms=set()

while 1:

a=int(input("请输入一个数字:"))

if a==-1:

    break

    ms.add(a)

print(ms)

print(ms)

#案例:从终端输入一个字符串就加入集合中,然后打印,又输入一个字符串,然后打印,直到输入q,退出输入

#然后打印最终的集合,字符串要分开存储,如输入hello,存储的列表是{'h','e','l','0'}

ms=set()

while 1:

a=input("请输入一个字符串:")

if a=='q':

    break

    ms.update(a)

print(ms)

print(ms)

集合操作-删除元素及删除整个集合

格式:

集合.remove(元素)  # 元素如果不存在会引发KeyError

集合.discard(元素)  # 元素如果不存在不发生任何事

集合.pop()  # 集合元素是字符串类型时删除随机元素。 集合元素是其他数据类型时,删除左边第一个元素

del 集合名 #删除整个集合

#案例:有集合{1,2,3,'hello','world'},删除全部字符串,然后最左边第一个元素

a={1,2,3,'hello','world'}

a.discard("hello")

a.discard("world")

a.pop()

print(a)

集合操作-获取集合的长度

格式:

len(集合名)

#案例:有集合{1,2,3,4,'hello','a'},保留1个元素,其他的删除,假如元素个数不确定

s={1,2,3,4,'hello','a'}

for i  in range(len(s)-1):

            s.pop()

  print(s)

集合的集运算

集合的交集,并集,差集,对称差集的运算

{1,2,3,4}交集{4,5,6,7} -->4   交集(&)

{1,2,3,4}并集{4,5,6,7} ->1,2,3,4,5,6,7  并集(|)

{1,2,3,4}差集{4,5,6,7} ->1,2,3  差集(-)

{1,2,3,4}对称差集{4,5,6,7}->1,2,3,5,6,7 4同时出现在两个集合中,不选它 对称差集(^)

#案例:使用花括号和set创建各一个集合,然后对集合进行交、并、差、对称差运算

s={1,2,3,4,5,6}

s1=set([6,7,8,9,10])

print(s&s1)

print(s|s1)

print(s-s1)

print(s^s1)

1、集合概念

Python中的集合,是一个无序的、没有重复项的集。它支持数学概念上的集合操作,如交集、并集、补集和差集。集合是可变的,可以在其中添加或删除项。集合用花括号“{}”括起来,并用逗号“,”来分隔其中的项。

2、创建集合

可以使用花括号“{}”创建集合,集合会自动去除重复的项。下面的集合包含了几种用字符串表示的水果:

>>> # 创建fruits集合时,'apple'出现了两次

>>> fruits = {'apple', 'banana', 'watermelon', 'strawberry', 'apple'}

>>> fruits  # 查看fruits集合,'apple'只有保留了一个

{'apple', 'strawberry', 'banana', 'watermelon'}

与列表、元组、字典一样,集合也可以用工厂函数set()来创建。set()函数的参数要么为空,要么为可迭代对象(如列表、元组和字符串):

>>> fruits = set(['apple', 'banana', 'watermelon', 'strawberry', 'apple'])   # 以列表为参数创建集合

>>> fruits

{'apple', 'strawberry', 'banana', 'watermelon'}

>>> numbers = set((1, 2, 3, 3, 2, 4))   # 以元组为参数创建集合

>>> numbers

{1, 2, 3, 4}

>>> letters = set('banana')   # 以字符串为参数创建集合

>>> letters

{'b', 'a', 'n'}

如果想要创建一个空集合,那么使用空的花括号“{}”是行不通的,因为这样创建的是一个空字典:

>>> empty = {}

>>> empty

{}

>>> type(empty)

<class 'dict'>

创建空集合的唯一方式就是使用不包含任何参数的set()函数:

>>> empty = set()

>>> empty  # 空集合表示为set()

set()

>>> type(empty)

<class 'set'>

3、集合添加项

集合是可变的数据类型,在创建集合之后,可以使用集合的add()方法向其添加项:

>>> numbers = {1, 2, 3}

>>> numbers.add(4)   # 向numbers集合中添加整数4

>>> numbers

{1, 2, 3, 4}

>>> numbers.add('five')   # 向numbers集合中添加字符串'five'

>>> numbers

{1, 2, 3, 4, 'five'}

>>> numbers.add((5, 6, 7))   # 向numbers集合中添加元组(5, 6, 7)

>>> numbers

{1, 2, 3, 4, (5, 6, 7), 'five'}

如果向某个集合中添加已经存在的项,那么什么也不会发生:

>>> fruits = {'apple', 'strawberry', 'banana', 'watermelon'}

>>> fruits

{'banana', 'apple', 'watermelon', 'strawberry'}

>>> fruits.add('apple')   # 添加已经存在的项'apple'

>>> fruits   # fruits集合并没有改变

{'banana', 'apple', 'watermelon', 'strawberry'}

也可以使用集合的update()方法向集合中添加项,参数必须是可迭代对象,如列表、字符串或另一个集合。类似于列表的append()方法和extend()方法,但区别是集合的update()方法总是会将可迭代对象“展开”:

>>> numbers = {1}

>>> numbers

{1}

>>> numbers.update((5, 6, 7))

>>> numbers   # 可以看出update()方法和add()方法的区别

{1, 5, 6, 7}

>>> numbers.update({4, 5}, {6, 7, 8})   # 参数为两个集合

>>> numbers

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

4、集合删除项

可以使用集合的remove()方法删除某个集合中的指定项:

>>> numbers = {1, 2, 3, 5, 7}

>>> numbers.remove(1)

>>> numbers

{2, 3, 5, 7}

>>> numbers.remove(3)

>>> numbers

{2, 5, 7}

如果试图删除集合中不存在的项,那么Python解释器会报错:

>>> numbers = {1, 2, 3, 5, 7}

>>> numbers.remove(4)

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

KeyError: 4

还可以使用集合的discard()方法来删除项,它和remove()方法唯一的区别是,当试图删除不存在的项时,discard()方法并不会报错,而是什么也不会发生:

>>> numbers = {1, 2, 3, 5, 7}

>>> numbers.discard(1)

>>> numbers

{2, 3, 5, 7}

>>> numbers.discard(3)

>>> numbers

{2, 5, 7}

>>> numbers.discard(4)

>>> numbers  # 什么也没发生

{2, 5, 7}

5、检查某个项是否在集合中

集合的in操作符用于检查指定项是否在集合中,not in操作符用于检查指定项是否不在集合中:

>>> numbers = {1, 2, 3, 5, 7}

>>> 1 in numbers   # 1在numbers集合中,返回True

True

>>> 3 in numbers   # 3在numbers集合中,返回True

True

>>> 4 in numbers   # 4不在numbers集合中,返回False

False

>>> 4 not in numbers   # not in是in的反向操作

True

6、查看集合的长度

集合的内建函数len()用于查看集合的长度,即集合中项的个数:

>>> empty = set()

>>> len(empty)

0

>>> numbers = {1, 2, 3, 5, 7}

>>> len(numbers)

5