集合 set
创建集合
set('zhou wu')
print('z','h','o','u',' ','w','u')
集合分类
- 可变集合(set):可添加、删除,非可哈希,不能用作字典的键值,也不可做其他集合的元素。
- 不可变集合(frozenset):与可变集合相反。
li=[1,2,3]
s=set(li)
dic={s:'123'}#TypeError:unhashable type: 'set'
访问集合
由于集合本身是无序的,所以不能为集合创建索引或切片操作,只能使用循环遍历或使用in not in 来访问判断集合元素
print(3 in s)#返回结果:true
更新集合
#可以使用以下内建方法来实现更新
s.add()#只添加一个元素
s.update()#添加一个序列
s.update('asd')#其结果为:原有的元素加上‘a’,‘s’,‘d’(无序的)
s.remove()#删除元素
set与frozenset的区别
同多数语言一样,set表示集合,最重要的特性就是无序,所以Python中的set不支持indexing,但支持len(set),x in set 等操作。
set有两种类型,set和frozenset。
set是可变的,有add(),remove()等方法。既然是可变的,所以它不存在哈希值。
frozenset是冻结的集合,它是不可变的,存在哈希值,好处是它可以作为字典的key,也可以作为其它集合的元素。缺点是一旦创建便不能更改,没有add,remove方法。
举例如下
fza=frozenset('a')
adict={fza:1,'b':2} #正确
setb=set('a')
bdict={setb:1,'b':2} #错误
还有一点需要注意,不管是set还是frozenset,Python都不支持创建一个整数的集合。
seta=set(1) #错误
setb=set('1')#正确
集合List
list中append()与extend()用法
列表是以类的形式实现的。“创建”列表实际上是将一个类实例化。因此,列表有多种方法可以操作。
- 列表可包含任何数据类型的元素,单个列表中的元素无须全为同一类型。
- append() 方法向列表的尾部添加一个新的元素。只接受一个参数。
- extend()方法只接受一个列表作为参数,并将该参数的每个元素都添加到原有的列表中。
append()用法示例:
>>> mylist = [1,2,0,'abc']
>>> mylist
[1, 2, 0, 'abc']
>>> mylist.append(4)
>>> mylist
[1, 2, 0, 'abc', 4]
>>> mylist.append('haha')
>>> mylist
[1, 2, 0, 'abc', 4, 'haha']
>>>
extend()用法示例:
>>> mylist
[1, 2, 0, 'abc', 4, 'haha']
>>> mylist.extend(['lulu'])
>>> mylist
[1, 2, 0, 'abc', 4, 'haha', 'lulu']
>>> mylist.extend([aaa,'lalalala'])
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'aaa' is not defined
>>> mylist.extend(['123123','lalalala'])
>>> mylist
[1, 2, 0, 'abc', 4, 'haha', 'lulu', '123123', 'lalalala']
>>> mylist.extend([111111,222])
>>> mylist
[1, 2, 0, 'abc', 4, 'haha', 'lulu', '123123', 'lalalala', 111111, 222]
>>>