python set什么类型_初识 python--Set 类型

初识 python--Set 类型

set 的内部结构和 dict 很像, 唯一区别是不存储 value, 因此, 判断一个元素是否在 set 中速度很快.

set 存储的元素和 dict 的 key 类似, 必须是不变对象, 因此, 任何可变对象是不能放入 set 中的.

最后, set 存储的元素也是没有顺序的.

set 的这些特点, 可以应用在哪些地方呢?

星期一到星期日可以用字符串'MON', 'TUE', ... 'SUN'表示.

假设我们让用户输入星期一至星期日的某天, 如何判断用户的输入是否是一个有效的星期呢?

可以用 if 语句判断, 但这样做非常繁琐:x='???'# 用户输入的字符串

ifx!='MON'andx!='TUE'andx!='WED'...andx!='SUN':

print'input error'

else:

print'input ok'

注意: if 语句中的... 表示没有列出的其它星期名称, 测试时, 请输入完整.

如果事先创建好一个 set, 包含'MON' ~ 'SUN':

weekdays = set(['MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT', 'SUN'])

再判断输入是否有效, 只需要判断该字符串是否在 set 中:x='???'# 用户输入的字符串

ifxinweekdays:

print'input ok'

else:

print'input error'

这样一来, 代码就简单多了.

遍历 set

由于 set 也是一个集合, 所以, 遍历 set 和遍历 list 类似, 都可以通过 for 循环实现.

直接使用 for 循环可以遍历 set 的元素:>>>s=set(['Adam','Lisa','Bart'])

>>>fornameins:

...printname

...

Lisa

Adam

Bart

注意: 观察 for 循环在遍历 set 时, 元素的顺序和 list 的顺序很可能是不同的, 而且不同的机器上运行的结果也可能不同.

任务

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

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

代码s=set([('Adam',95),('Lisa',85),('Bart',59)])

forxins:

print(x[0],':',x[1])

运行结果Adam:95

Bart:59

Lisa:85

更新 set

由于 set 存储的是一组不重复的无序元素, 因此, 更新 set 主要做两件事:

一是把新的元素添加到 set 中, 二是把已有元素从 set 中删除.

添加元素时, 用 set 的 add() 方法:>>>s=set([1,2,3])

>>>s.add(4)

>>>prints

set([1,2,3,4])

如果添加的元素已经存在于 set 中, add() 不会报错, 但是不会加进去了:>>>s=set([1,2,3])

>>>s.add(3)

>>>prints

set([1,2,3])

删除 set 中的元素时, 用 set 的 remove() 方法:>>>s=set([1,2,3,4])

>>>s.remove(4)

>>>prints

set([1,2,3])

如果删除的元素不存在 set 中, remove() 会报错:>>>s=set([1,2,3])

>>>s.remove(4)

Traceback(most recent calllast):

File"",line1,in

KeyError:4

所以用 add() 可以直接添加, 而 remove() 前需要判断.

来源: http://www.bubuko.com/infodetail-3408709.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值