python学习笔记——集合

……

目录:

一;概念

二;创建集合

三;与集合相关的函数

四;遍历集合

五;判断元素是否在集合中

六;子集、超集和相等判断

七;集合运算

八;列表去重,保持原有顺序输出

……

一;概念

集合(set)是一类容器,元素没有先后顺序,并且元素的值不重复,集合用的是{}将元素括起来。

……

……

二;创建集合

1;创建一个空集合,a=set()

2;直接进行赋值初始化,a={'a',1,2,1,'a','w1'}

3;也可以将其它类型容器转化为集合。

比如:

a=[1,2,3,4,2]

b=set(a)

print(b)

会输出:

{1, 2, 3, 4}

通过set()函数,就可以将列表转化为集合了,转化成的集合有一个很大的好处就是可以删去多余的元素,比如a列表中本来有两个2,但是变成集合后,就只有一个2了。如果想要再进行列表的操作怎么办呢?很简单,再转变成列表就行了,比如:

a=[1,2,3,4,2]

b=set(a)

print(b)

c=list(b)

print(c)

会输出:

{1, 2, 3, 4}

[1, 2, 3, 4]

将列表转变成集合,然后又从集合转变成字典,就成功的消去了多余的元素了。

4;在创建集合时,python除了会消去重复的元素外,还会改变元素的顺序(集合是无序的)。

……

……

三;与集合相关的函数

3b0edf8ef4444df49c3e6e58af7d5d2a.png

 

 

事实上,还是之前的那几个函数……不过缺少了对元素下标和顺序等一些操作的函数,因为集合时是无序的,没有下标。

……

……

四;遍历集合

虽说集合是无序的,但却可以用循环来遍历集合,比如:

a={'a',1,2,1,'a','w1'}

for i in a:

print(i)

会输出:

1

2

w1

a

为什么会输出这样一个顺序呢?因为集合是无序的,所以会随机输出元素,我再运行一次程序,输出的值可能就不是1-2-w1-a了,可能变成1-2-a-w1了。(所以将集合转化为列表进行输出,更加稳定一些,起码顺序不会这样颠三倒四)

……

……

五;判断元素是否在集合中

用in和not in判断就可以了。

比如:

a={'a',1,2,1,'a','w1'}

if(2 in a):

    print('yes')

会输出:

yes

……

……

六;子集、超集和相等判断

可以直接进行=、>、<、>=、<=进行判断。

比如:

a={1,2,3}

b={3,2,1}

if(a==b):

    print('yes')

会输出:

yes

集合是无序的,所以顺序无论怎么变,只要元素能一一相等,那这两个集合就相等。

而如果a>b,则说明b是a的真子集,a是b的真超集。

a>=b,说明b是a的子集,a是b的超集。

至于<和<=,也都类似。

……

……

七;集合运算

4d4aa5b73c3c449b820c4c995064f747.png

 

 

八;列表去重,保持原有顺序输出

将列表转换成集合删去重复的数,然后再恢复成列表,顺序就会发生改变,而怎么样保持原有顺序输出呢?

比如:

a=[1,'w','a','z',23,1,21,'a',11,2,2]

b=list(set(a))

print(b)

b.sort(key=a.index)

print(b)

会输出:

[1, 2, 11, 'w', 21, 23, 'a', 'z']

[1, 'w', 'a', 'z', 23, 21, 11, 2]

第一行是无序输出,而第二行则是根据原有的列表顺序输出。

 

  • 1
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值