Python(七) set

set简介

set 持有一系列元素,这一点和 list 很像,但是set的元素没有重复,而且是无序的,这点和 dict 的 key很像,创建 set 的方式是调用 set() 并传入一个 list,list的元素将作为set的元素:

s=set(['a','b','c'])
print(s)

输出

{'c', 'a', 'b'}

请注意,上述打印的形式类似 list, 但它不是 list,仔细看还可以发现,打印的顺序和原始 list 的顺序有可能是不同的,因为set内部存储的元素是无序的。
set不能包含重复的元素,所以,当我们传入包含重复元素的 list 会怎么样呢?

s=set(['a','b','c','c'])
print(s)
print(len(s))

输出

{'b', 'c', 'a'}
3

结果显示,set会自动去掉重复的元素,原来的list有4个元素,但set只有3个元素。

访问set

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

s = set(['Adam', 'Lisa', 'Bart', 'Paul'])
print('Adam'in s)

>>>True

set的特点

set存储的元素和dict的key类似,必须是不变对象,因此,任何可变对象是不能放入set中的。
判断某个元素在不在set里面

months = set(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'])
x1 = 'Feb'
x2 = 'Sun'

if x1 in months:
    print ('x1: ok')
else:
    print ('x1: error')

if x2 in months:
    print ('x2: ok')
else:
    print ('x2: error')

遍历set

像list一样用for循环遍历,同样不是有序的。

months = set(['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'])
for mon in months:
     print(mon)
>>>
Jun
May
Apr
Jan
Jul
Feb
Oct
Dec
Sep
Aug
Nov
Mar

练习:请用 for 循环遍历如下的set,打印出 name: score 来。

s = set([(‘Adam’, 95), (‘Lisa’, 85), (‘Bart’, 59)])

s = set([('Adam', 95), ('Lisa', 85), ('Bart', 59)])
for x in s:
    print (x[0],':',x[1])

更新set

由于set存储的是一组不重复的无序元素,因此,更新set主要做两件事:
      ①是把新的元素添加到set中
      ②是把已有元素从set中删除。
添加元素时,用set的add()方法.

任务
针对下面的set,给定一个list,对list中的每一个元素,如果在set中,就将其删除,如果不在set中,就添加进去。
s = set([‘Adam’, ‘Lisa’, ‘Paul’])
L = [‘Adam’, ‘Lisa’, ‘Bart’, ‘Paul’]

s = set(['Adam', 'Lisa', 'Paul'])
L = ['Adam', 'Lisa', 'Bart', 'Paul']
for name in L:
    if name in s:
        s.remove(name)
    else:
         s.add(name)   
print(s)         

猜你喜欢

转载自blog.csdn.net/wo164683812/article/details/80214882
今日推荐