Python基础系列——集合
Python 集合
列表——list
pyton中的列表,有点类似与java中的数组,也是有序的,可以对其新增,删除元素,但是它的灵活性和功能要比数组强大很多;list使用“[”和“]”表示定义一个列表。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'Roy.Yin'
'''
python list
'''
#定义一个空的列表
names = []
names = ['roy','lucy','lily','jack']
print names
#末尾添加元素
names.append('sarah')
#index位子插入元素
names.insert(2,'mark')
#删除元素
names.remove('lucy')
#获取某个位子的元素
print names[0]
#index超过最大值会抛异常,list index out of range
#print names[8]
#list可以使用负数的index来表示倒序索引,如-1表示的倒数第1个元素
print names[-1]
#以堆栈的方式弹出index位子的元素,默认index=0
name = names.pop(1)
print name
#返回元素所在的index值
print names.index('jack')
#返回list的元素个数
print len(names)
#返回元素在列表中出现的次数
print names.count('roy')
names2 = ['tom','sala']
#将name2中的元素添加倒names中
names.extend(names2)
print names
1 |
|
元组——tuple
python还有另一种有序列表,它叫做元组(不是蛋糕的那个元祖),它和list非常的相似,只是元组一旦初始化后就不能在修改了;元组使用“(”和”)”来定义。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'Roy.Yin'
'''
python tunpl
'''
#定义一个空的tuple
t = ()
#返回tuple的元素个数
print len(t)
user = ('roy','sarah','lucy')
#return roy
print user[0]
#return sarah
print user[-2]
allUser = ('tom',user,'jim')
#('tom', ('roy', 'sarah', 'lucy'), 'jim')
print allUser
#return sarah
print allUser[1][1]
names = ['sarah', 'sala', 'roy']
allUser = ('lisa',names,'jim')
# ('lisa', ['sarah', 'sala', 'roy'], 'jim')
print allUser
allUser[1][1] = '$sala$'
#虽然元组是不可以改变的,但是如果它其中的元素如果是可变对象,那也是可以通过
#持有的引用地址改变值,对于元组来说,它的元素仍然没有改变,因为该元素的引用
#没有改变
#('lisa', ['sarah', '$sala$', 'roy'], 'jim')
print allUser
#当tuple只有一个元素的时候,请使用“,”
a = (1)
#此时a=1,因为括号为计算中的括号
print a
#此时b为元组
b = (1,)
print b
tuple没有像list那么多的新增,删除等方法,因为它是不可变对象
字典——dict
python中还有一种列表,它和java中的map相似,也是键值对(key-value)存储的,查找速度非常快,那就是字典-dict;python的dict也是无序的,并且key需要是唯一的;python中使用大括号“{”和“}”定义。字典的key不一定要是字符串,也可以是其他不可变对象,比如元组。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'Roy.Yin'
'''
python dict
'''
user = {'name':'roy','age':18}
print user
# 通过key设置值,可以新增元素,或者修改已存在的键的值
user['tel']='13812348080'
user['age']=28
#{'age': 28, 'tel': '13812348080', 'name': 'roy'}
print user
#通过key获取值 roy
print user['name']
#如果key不存在,会报KeyError异常
#print user['address']
#如果不确定key是否存在,可以使用get方法获取值,不存在只会返回None
print user.get('name')
#同时,get还支持,不存在返回默认值
print user.get('address','中国')
#dict支持嵌套
person = {'name':'roy','age':18,'addr':{'address1':'中国','address2':'美国'}}
#return 中国 也支持层次获取
print person['addr']['address1']
#判断key是否存在dict中
print 'name' in person
#获取字段的长度
print len(person)
#获取dict的所有key
print person.keys()
#获取dict的所以value
print person.values()
#获取dict的键值对
print person.items()
dict1 = {'name':'roy','age':20}
dict2 = {'name':'sarah','addr':'中国'}
#将dict2的元素添加倒dict1中,如果key冲突没救覆盖
dict1.update(dict2)
print dict1
#删除某个键值对,把值返回
print dict1.pop('age')
#删除某个元素
del dict1['name']
Set
set也是python中的列表,和java中的set类似,有的人说set是不能有重复元素的list,但是我们更愿意说它是没有值的dict,它也是无序的。1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34#!/usr/bin/env python
# -*- coding: utf-8 -*-
__author__ = 'Roy.Yin'
'''
python set
'''
#生成空set
set1 = set([])
print set1
set1 = set([1,2,3])
print set1
#set([1, 2, 5]),因为set不允许重复值,所以相同的元素只保留一个
print set([1,2,5,2])
#新增元素
set1.add(5)
#删除元素
set1.remove(1)
#pop出元素,即删除,返回key
print set1.pop()
set2 = set([3,6,7])
#取2个set的交集
print set1 & set2
#取2个set的并集
print set1 | set2