码迷,mamicode.com
首页 > 其他好文 > 详细

集合(一)

时间:2018-06-15 10:50:04      阅读:170      评论:0      收藏:0      [点我收藏+]

标签:集合   val   返回值   pop   ast   报错   两种   lin   rac   

set是Python中一种基本数据类型,它分为可变集合(set)和不可变集合(frozenset)两种。类似于其他语言,集合是一个无序不重复元素集,包括创建集合set、向集合中添加元素、删除集合中的元素、求集合的交集、并集、差集等操作。

创建空集合
s = set()

创建集合

>> set1 = {1,2,3,4,5,6}
>> set1
set([1, 2, 3, 4, 5, 6])

创建不可变集合 冰冻集合
不能被修改元素、删除元组,但是可以删除整个集合
可以使用集合的其他操作

>> a = frozenset("123456789")
>> a
frozenset([‘1‘, ‘3‘, ‘2‘, ‘5‘, ‘4‘, ‘7‘, ‘6‘, ‘9‘, ‘8‘])
>> a.add(10)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
AttributeError: ‘frozenset‘ object has no attribute ‘add‘

列表转换成集合

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

字符串转换成集合

>> set("abc")
set([‘a‘, ‘c‘, ‘b‘])

元组转换成集合

>> set((2,3,4,5))
set([2, 3, 4, 5])

字典转换成集合,只能转换key

>> set({1:"a",2:"b",3:"c"})
set([1, 2, 3])
其他类型数据转换成集合后重复元素被去除,只保留一个

添加元素
set.add(value)
add()方法是将要添加的元素作为一个整体添加到集合中。

>> a.add("d")
>> a
set([‘a‘, ‘c‘, ‘b‘, ‘d‘])

>> a.add("456")
>> a
set([‘a‘, ‘c‘, ‘b‘, ‘d‘, ‘456‘])
set.update(value)
update()方法把传入的元素拆分成单个字符添加到集合中,去掉重复的;
>> a.update("789")
>> a
set([‘a‘, ‘c‘, ‘b‘, ‘d‘, ‘456‘, ‘7‘, ‘9‘, ‘8‘])

删除集合元素
set.remove(value)
删除指定值的元素,如果集合元素不存在会报错

>> a
set([‘a‘, 1, 2, 3, 4, 5, ‘c‘, ‘[2,3,4]‘, ‘b‘])
>> a.remove("a")
>> a
set([1, 2, 3, 4, 5, ‘c‘, ‘[2,3,4]‘, ‘b‘])
>> a.remove("[2,3,4]")
>> a
set([1, 2, 3, 4, 5, ‘c‘, ‘b‘])
set.pop()
pop()返回一个任意元素并删除
>> a
set([1, 2, 3, 4, 5, ‘c‘, ‘b‘])
>> a.pop()
1
>> a
set([2, 3, 4, 5, ‘c‘, ‘b‘])
>> a.pop()
2
>> a
set([3, 4, 5, ‘c‘, ‘b‘])
set.discard(value)
在集合中查找元素,如果存在则删除;如果没找到,则什么也不做。该函数没有返回值
>> set1
set([‘1‘, ‘3‘, ‘2‘, ‘5‘, ‘4‘])
>> set1.discard("3")
>> set1
set([‘1‘, ‘2‘, ‘5‘, ‘4‘])
遍历集合
使用in进行遍历
>> a
set([1, 2, 3, 4, 5, ‘c‘, ‘b‘])
>> for value in a:
... print value
...
1
2
3
4
5
c
B
使用enumerate进行遍历
>> set_1 = {1,2,3,4,5,"a"}
>> set_1
set([‘a‘, 1, 2, 3, 4, 5])
>> for index,value in enumerate(set_1):
... print index,value
...
0 a
1 1
2 2
3 3
4 4
5 5

集合(一)

标签:集合   val   返回值   pop   ast   报错   两种   lin   rac   

原文地址:http://blog.51cto.com/13496943/2129562

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!