Python基础-列表_元组_字典_集合

本节内容

  1. 列表、元组操作
  2. 字符串操作
  3. 字典操作
  4. 集合操作
  5. 文件操作
  6. 字符编码与转码 

1. 列表、元组操作

列表是我们最以后最常用的数据类型之一,通过列表可以对数据实现最方便的存储、修改等操作

 

定义列表示例

1 names = ["ZhangYang"," Guyun"," Xiangpeng"," XuLiangChen"]

通过下标访问列表中的元素,下标从0开始计数

1 >>> names[0]
2 'ZhangYang'

 

切片示例1

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 #!/usr/bin/env python
 6 # -*- coding:utf-8 -*-
 7 #Author: huzhihua
 8 
 9 names = "ZhangYang Guyun Xiangpeng XuLiangChen"
10 names = ["ZhangYang"," Guyun"," Xiangpeng"," XuLiangChen"]
11 
12 print(names)
13 print(names[0],names[2])
14 print(names[1:3])       #这就是切片(从0开始切,0就是ZhangYang)

执行结果:

1 ['ZhangYang', ' Guyun', ' Xiangpeng', ' XuLiangChen']
2 ZhangYang  Xiangpeng
3 [' Guyun', ' Xiangpeng']

 

切片示例2

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = "ZhangYang Guyun Xiangpeng XuLiangChen"
 6 names = ["ZhangYang"," Guyun"," Xiangpeng"," XuLiangChen"]
 7 
 8 print(names)
 9 print(names[0],names[2])
10 print(names[1:3])  #这就是切片(从0开始,取下标1至下标3之间的数字,包括1,不包括3)
11print(names[3]) #取第3个值,从0从始取
12print(names[-2]) #在不知道是多长的情况下,取出最后2个位置
13print(names[-2:]) #要取最后面的值,把-1省略掉
14print(names[0:3]) #取从0-3
15print(names[:3]) #如果是从头开始取,0可以忽略,跟上句效果一样

执行结果:

1 ['ZhangYang', ' Guyun', ' Xiangpeng', ' XuLiangChen']
2 ZhangYang  Xiangpeng
3 [' Guyun', ' Xiangpeng']
4  XuLiangChen
5  Xiangpeng
6 [' Xiangpeng', ' XuLiangChen']
7 ['ZhangYang', ' Guyun', ' Xiangpeng']
8 ['ZhangYang', ' Guyun', ' Xiangpeng']

 

追加示例

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #Author: nulige
4 
5 names = "ZhangYang Guyun Xiangpeng XuLiangChen"
6 names = ["ZhangYang"," Guyun"," Xiangpeng"," XuLiangChen"]
7 names.append("LeiHaidong")   #追加到最后一行
8 print(names)

执行结果:

1 ['ZhangYang', ' Guyun', ' Xiangpeng', ' XuLiangChen', 'LeiHaidong']

 

插入示例

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = "ZhangYang Guyun Xiangpeng XuLiangChen"
 6 names = ["ZhangYang"," Guyun"," Xiangpeng"," XuLiangChen"]
 7 names.append("LeiHaidong")   #追加到最后一行
 8 names.insert(1,"nulige")     #插到那个位置 就写那个位置
 9 names.insert(3,"Xinzhiyu")   #插入3的位置,不能批量插入
10 print(names)

执行结果:

1 ['ZhangYang', 'nulige', ' Guyun', 'Xinzhiyu'' Xiangpeng', ' XuLiangChen', 'LeiHaidong']

 

修改示例

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = "ZhangYang Guyun Xiangpeng XuLiangChen"
 6 names = ["ZhangYang"," Guyun"," Xiangpeng"," XuLiangChen"]
 7 names.append("LeiHaidong")   #追加到最后一行
 8 names.insert(1,"nulige")     #插到那个位置 就写那个位置
 9 names.insert(3,"Xinzhiyu")   #插入3的位置,不能批量插入
10 names[2] ="XieDi"        #修改
11 print(names)

执行结果:

1 ['ZhangYang', 'nulige', 'XieDi', 'Xinzhiyu', ' Xiangpeng', ' XuLiangChen', 'LeiHaidong']

 

删除示例

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = "ZhangYang Guyun Xiangpeng XuLiangChen"
 6 names = ["ZhangYang"," Guyun"," Xiangpeng"," XuLiangChen"]
 7 names.append("LeiHaidong")   #追加到最后一行
 8 names.insert(1,"Nulige")     #插到那个位置 就写那个位置
 9 names.insert(3,"Xinzhiyu")   #插入3的位置,不能批量插入
10 names[2] ="XieDi"
11 
12 #delete
13 names.remove("Nulige")   #删除Nulige
14 del names[1]
15 print(names)

执行效果:

删除前效果:

['ZhangYang', 'Nulige', 'XieDi', 'Xinzhiyu', ' Xiangpeng', ' XuLiangChen', 'LeiHaidong']

删除后效果:

1 ['ZhangYang', 'Xinzhiyu', ' Xiangpeng', ' XuLiangChen', 'LeiHaidong']

index示例

查找XieDi的位置,并将找到的结果打印出来
 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = "ZhangYang Guyun Xiangpeng XuLiangChen"
 6 names = ["ZhangYang"," Guyun","XieDi"," Xiangpeng"," XuLiangChen"]
 7 
 8 # 查找XieDi的位置,并将找到的结果打印出来
 9 print(names)
10 print(names.index("XieDi"))           #找到XieDi
11 print(names[names.index("XieDi")])    #把他打印出来

执行结果:

1 ['ZhangYang', ' Guyun', 'XieDi', ' Xiangpeng', ' XuLiangChen']
2 2
3 XieDi

 

拷贝示例1

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #Author: nulige
4 
5 names = ["4ZhangYang"," #!Guyun","xXieDi"," Xiangpeng"," XuLiangChen"]
6 names2 = names.copy()
7 print(names)
8 print(names2)

执行结果:

1 ['4ZhangYang', ' #!Guyun', 'xXieDi', ' Xiangpeng', ' XuLiangChen']
2 ['4ZhangYang', ' #!Guyun', 'xXieDi', ' Xiangpeng', ' XuLiangChen']

 

拷贝示例2

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = ["4ZhangYang","#!Guyun","XiangPeng","ChenRonghua"]
 6 names2 = names.copy()
 7 print(names)
 8 print(names2)
 9 names[2] = "向鹏"
10 print(names)

执行结果:

1 ['4ZhangYang', '#!Guyun', 'XiangPeng', 'ChenRonghua']
2 ['4ZhangYang', '#!Guyun', 'XiangPeng', 'ChenRonghua']
3 ['4ZhangYang', '#!Guyun', '向鹏', 'ChenRonghua']

 

拷贝示例3

 1、浅拷贝

示例1

浅拷贝就是浅浅的copy一层

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 #import copy
 5 names = ["4ZhangYang","#!Guyun","XiangPeng",["alex","jack"],"ChenRonghua"]
 6 names2 = names.copy()
 7 print(names)
 8 print(names2)
 9 names[2] = "向鹏"
10 names[3][0] = "ALEXANDER"    #注意:复制列表,只会复制一层
11 print(names)
12 print(names2)

执行结果:

1 ['4ZhangYang', '#!Guyun', 'XiangPeng', ['alex', 'jack'], 'ChenRonghua']
2 ['4ZhangYang', '#!Guyun', 'XiangPeng', ['alex', 'jack'], 'ChenRonghua']
3 ['4ZhangYang', '#!Guyun', '向鹏', ['ALEXANDER', 'jack'], 'ChenRonghua']
4 ['4ZhangYang', '#!Guyun', 'XiangPeng', ['ALEXANDER', 'jack'], 'ChenRonghua']   #只拷贝了第一层,所以向鹏没有变

 

示例2

运行结果报错,后期再解决

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 import copy
 6 
 7 person=['name',['a',100]]
 8 #p1=copy.deepcopy(person)
 9 p1=copy.copy(person)
10 p2=person[:]
11 p3=list(person)

结果省略...

 

示例3

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 person = ['name',['saving',100]]
 6 p1=person[:]
 7 p2=person[:]
 8 p1[0]='alex'
 9 p2[0]='fenjie'
10 p1[1][1]=50    #浅拷贝的作用,用于创建联合账号(100元,两人的两个账号各分一半,变成两个50元)
11 print(p1)
12 print(p2)

执行结果:

1 ['alex', ['saving', 50]]
2 ['fenjie', ['saving', 50]]

 

2、深拷贝

此实验还有点小问题,后期修改。

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 import copy
 6 
 7 names = ["4ZhangYang","#!Guyun","XiangPeng",["alex","jack"],"ChenRonghua"]
 8 #names2 = names.copy()
 9 #names2 = copy.copy(names)
10 names2 = copy.deepcopy(names)
11 print(names)
12 print(names2)
13 names[2] = "向鹏"
14 names[3][0] = "ALEXANDER"    #注意:复制列表,只会复制一层
15 print(names)
16 print(names2)

执行结果:省略......

 

列表循环

 用for实现列表循环

1 #!/usr/bin/env python
2 # -*- coding:utf-8 -*-
3 #Author: nulige
4 
5 #定义一个列表
6 names = ["4ZhangYang","#!Guyun","XiangPeng",["alex","jack"],"ChenRonghua"]
7 for i in names:
8     print(i)

执行结果:

1 4ZhangYang
2 #!Guyun
3 XiangPeng
4 ['alex', 'jack']
5 ChenRonghua

 

跳着切片示例

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 #跳着切片
 6 names = ["4ZhangYang","#!Guyun","XiangPeng",["alex","jack"],"ChenRonghua","Xuliangche"]
 7 print(names[0:-1:2])
 8 print(names[::2])
 9 print(names[:])   #0到-1
10 
11 for i in names:
12     print(i)

执行结果:

1 ['4ZhangYang', 'XiangPeng', 'ChenRonghua']
2 ['4ZhangYang', 'XiangPeng', 'ChenRonghua']
3 ['4ZhangYang', '#!Guyun', 'XiangPeng', ['alex', 'jack'], 'ChenRonghua', 'Xuliangche']
4 4ZhangYang
5 #!Guyun
6 XiangPeng
7 ['alex', 'jack']
8 ChenRonghua
9 Xuliangche

 

元组 (也叫不可变列表)

元组其实跟列表差不多,也是存一组数,只不是它一旦创建,便不能再修改,所以又叫只读列表。
 
语法
names = ("ales","jack","eric")

它只有两个方法,一个是count,一个是index。

 

示例:

 1 #定义一个元组
 2 tuple1 = (1, 2, '3', 4, '5')
 3 # 定义了一个元组之后就无法再添加或修改元组中的元素
 4 print tuple1[0]    # 元组的元素都有确定的顺序。元组的索引也是以0为基点的
 5 print tuple1[-1]   # 负的索引从元组的尾部开始计数
 6 print tuple1[1:3]  # 元组也可以进行切片操作。对元组切片可以得到新的元组。
 7 # 可以使用 in 运算符检查某元素是否存在于元组中。
 8 print 1 in tuple1   # True
 9 #使用for in 进行遍历元组
10 for item in tuple1:
11     print item
12 # 如果需要获取item的序号 可以使用下面的遍历方法:
13 for index in range(len(tuple1)):
14     print tuple1[index]
15 # 还可以使用内置的enumerate函数
16 for index, item in enumerate(tuple1):
17     print '%i, %s' % (index, item)

 

统计示例

#统计有两个XieDi

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = "ZhangYang Guyun Xiangpeng XuLiangChen "
 6 names = ["ZhangYang"," Guyun","XieDi"," Xiangpeng"," XuLiangChen"]
 7 names.append("LeiHaidong")
 8 names.insert(1,"ChenRonghua")
 9 names.insert(3,"Xinzhiyu")   #插入
10 names[2] ="XieDi"            #修改
11 print(names)
12 print(names.count("XieDi"))

执行结果:

1 ['ZhangYang', 'ChenRonghua', 'XieDi', 'Xinzhiyu', 'XieDi', ' Xiangpeng', ' XuLiangChen', 'LeiHaidong']
2 2

 

清除示例

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = "ZhangYang Guyun Xiangpeng XuLiangChen "
 6 names = ["ZhangYang"," Guyun","XieDi"," Xiangpeng"," XuLiangChen"]
 7 names.append("LeiHaidong")
 8 names.insert(1,"ChenRonghua")
 9 names.insert(3,"Xinzhiyu")   #插入
10 names[2] ="XieDi"            #修改
11 print(names)
12 print(names.count("XieDi"))
13 
14 #clear
15 names.clear()
16 print(names)

执行结果

1 ['ZhangYang', 'ChenRonghua', 'XieDi', 'Xinzhiyu', 'XieDi', ' Xiangpeng', ' XuLiangChen', 'LeiHaidong']
2 2
3 []   

 

反转示例1

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = "ZhangYang Guyun Xiangpeng XuLiangChen "
 6 names = ["ZhangYang"," Guyun","XieDi"," Xiangpeng"," XuLiangChen"]
 7 names.append("LeiHaidong")
 8 names.insert(1,"ChenRonghua")
 9 names.insert(3,"Xinzhiyu")   #插入
10 names[2] ="XieDi"            #修改
11 print(names)
12 print(names.count("XieDi"))
13 
14 #reverse
15 names.reverse()
16 print(names)

执行结果:

1 ['ZhangYang', 'ChenRonghua', 'XieDi', 'Xinzhiyu', 'XieDi', ' Xiangpeng', ' XuLiangChen', 'LeiHaidong']    
2 2
3 ['LeiHaidong', ' XuLiangChen', ' Xiangpeng', 'XieDi', 'Xinzhiyu', 'XieDi', 'ChenRonghua', 'ZhangYang']    #对比第一行,反转过来了

 

反转示例2

 1 >>> names
 2 ['Alex', 'Tenglan', 'Amy', 'Tom', 'Amy', 1, 2, 3]
 3 >>> names.sort() #排序
 4 Traceback (most recent call last):
 5   File "<stdin>", line 1, in <module>
 6 TypeError: unorderable types: int() < str()   #3.0里不同数据类型不能放在一起排序了,擦
 7 >>> names[-3] = '1'
 8 >>> names[-2] = '2'
 9 >>> names[-1] = '3'
10 >>> names
11 ['Alex', 'Amy', 'Amy', 'Tenglan', 'Tom', '1', '2', '3']
12 >>> names.sort()
13 >>> names
14 ['1', '2', '3', 'Alex', 'Amy', 'Amy', 'Tenglan', 'Tom']

 

排序示例

按ASCII码顺序进行排序的

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = ["4ZhangYang"," #!Guyun","xXieDi"," Xiangpeng"," XuLiangChen"]
 6 print(names)
 7 
 8 #排序(sort)
 9 names.sort()
10 print(names)

执行结果:

1 ['4ZhangYang', ' #!Guyun', 'xXieDi', ' Xiangpeng', ' XuLiangChen']
2 [' #!Guyun', ' Xiangpeng', ' XuLiangChen', '4ZhangYang', 'xXieDi']

 

扩展示例

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = ["4ZhangYang"," #!Guyun","xXieDi"," Xiangpeng"," XuLiangChen"]
 6 print(names)
 7 
 8 names2 = [1,2,3,4]
 9 names.extend(names2)
10 print(names)

执行结果:

1 ['4ZhangYang', ' #!Guyun', 'xXieDi', ' Xiangpeng', ' XuLiangChen']
2 ['4ZhangYang', ' #!Guyun', 'xXieDi', ' Xiangpeng', ' XuLiangChen', 1, 2, 3, 4]

 

删除列表中的变量示例

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 names = ["4ZhangYang"," #!Guyun","xXieDi"," Xiangpeng"," XuLiangChen"]
 6 print(names)
 7 
 8 names2 = [1,2,3,4]
 9 names.extend(names2)
10 del names2
11 print(names,names2)

执行结果:

会报错,因为找不到nemes2变量的值

1 Traceback (most recent call last):
2 ['4ZhangYang', ' #!Guyun', 'xXieDi', ' Xiangpeng', ' XuLiangChen']
3   File "D:/python/day2/name_test02.py", line 11, in <module>
4     print(names,names2)
5 NameError: name 'names2' is not defined

 

 字符串操作

 1 >>> a = 'alex'
 2 >>> a [1]
 3 'l'
 4 >>> a[2]
 5 'e'
 6 
 7 #备注:列表不能直接赋值
 8 
 9 >>> a[2] = '222'
10 Traceback (most recent call last):
11   File "<stdin>", line 1, in <module>
12 TypeError: 'str' object does not support item assignment

 

集合操作

集合的元素是不允许重复且无序的集合,集合就像是字典舍弃了值一样。

主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之前的交集、差集、并集等关系
 1 s = set([3,5,9,10])      #创建一个数值集合  
 2   
 3 t = set("Hello")         #创建一个唯一字符的集合  
 4 
 5 
 6 a = t | s          # t 和 s的并集  
 7   
 8 b = t & s          # t 和 s的交集  
 9   
10 c = t – s          # 求差集(项在t中,但不在s中)  
11   
12 d = t ^ s          # 对称差集(项在t或s中,但不会同时出现在二者中)  
13   
14    
15   
16 基本操作:  
17   
18 t.add('x')            # 添加一项  
19   
20 s.update([10,37,42])  # 在s中添加多项  
21   
22    
23   
24 使用remove()可以删除一项:  
25   
26 t.remove('H')  
27   
28   
29 len(s)  
30 set 的长度  
31   
32 x in s  
33 测试 x 是否是 s 的成员  
34   
35 x not in s  
36 测试 x 是否不是 s 的成员  
37   
38 s.issubset(t)  
39 s <= t  
40 测试是否 s 中的每一个元素都在 t 中  
41   
42 s.issuperset(t)  
43 s >= t  
44 测试是否 t 中的每一个元素都在 s 中  
45   
46 s.union(t)  
47 s | t  
48 返回一个新的 set 包含 s 和 t 中的每一个元素  
49   
50 s.intersection(t)  
51 s & t  
52 返回一个新的 set 包含 s 和 t 中的公共元素  
53   
54 s.difference(t)  
55 s - t  
56 返回一个新的 set 包含 s 中有但是 t 中没有的元素  
57   
58 s.symmetric_difference(t)  
59 s ^ t  
60 返回一个新的 set 包含 s 和 t 中不重复的元素  
61   
62 s.copy()  
63 返回 set “s”的一个浅复制

 

常用操作

交集(intersection)

两组列表中,取相同的值

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 list_1 = [1,4,5,7,3,6,7,9]
 6 list_1 = set(list_1)
 7 print(list_1,type(list_1))
 8 
 9 list_2 = ([2,6,0,66,22,8,4])
10 print(list_1,list_2)
11 
12 #交集
13 print( list_1.intersection(list_2) )

执行结果:

1 {1, 3, 4, 5, 6, 7, 9} <class 'set'>
2 {1, 3, 4, 5, 6, 7, 9} [2, 6, 0, 66, 22, 8, 4]
3 {4, 6}

 

并集(union)

两个列表合并成一个,去掉重复的值

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 list_1 = [1,4,5,7,3,6,7,9]
 6 list_1 = set(list_1)
 7 print(list_1,type(list_1))
 8 
 9 list_2 = ([2,6,0,66,22,8,4])
10 print(list_1,list_2)
11 
12 #并集
13 print(list_1.union(list_2))

执行结果:

1 {1, 3, 4, 5, 6, 7, 9} <class 'set'>
2 {1, 3, 4, 5, 6, 7, 9} [2, 6, 0, 66, 22, 8, 4]
3 {0, 1, 2, 3, 4, 5, 6, 7, 66, 9, 8, 22}

 

差集(difference)

只保留list1里面有的,list2中没有的值。

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 list_1 = [1,4,5,7,3,6,7,9]
 6 list_1 = set(list_1)
 7 print(list_1,type(list_1))
 8 
 9 list_2 = ([2,6,0,66,22,8,4])
10 print(list_1,list_2)
11 
12 #差
13 print(list_1.difference(list_2))
14 print(list_2.difference(list_1))

执行结果:

1 {1, 3, 4, 5, 6, 7, 9} <class 'set'>
2 {1, 3, 4, 5, 6, 7, 9} [2, 6, 0, 66, 22, 8, 4]
3 {1, 3, 5, 7, 9}
4 {0,8,2,66,22}

 

对称差集(symmetric_difference)

把交集去掉了,留下的不是并集,把两个互相都没有的,取出来。

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 list_1 = [1,4,5,7,3,6,7,9]
 6 list_1 = set(list_1)
 7 
 8 list_2 = ([2,6,0,66,22,8,4])
 9 print(list_1,list_2)
10 
11 
12 #反向差集
13 print(list_1.symmetric_difference(list_2))

执行结果:

1 {1, 3, 4, 5, 6, 7, 9} [2, 6, 0, 66, 22, 8, 4]
2 {0, 1, 2, 66, 3, 5, 8, 7, 9, 22}

 

isdisjoint

判断有没有交集,如果有返回False,否则返回True

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 list_1 = [1,4,5,7,3,6,7,9]
 6 list_1 = set(list_1)
 7 
 8 list_2 = ([2,6,0,66,22,8,4])
 9 print(list_1,list_2)
10 
11 #子集
12 list_3 = set([1,3,7])
13 print(list_3.issubset(list_1))
14 print(list_1.issubset(list_3))
15 
16 print("---------------------------------")
17 list_4 = set([5,6,8])
18 print(list_3.isdisjoint(list_4))

执行结果:

1 {1, 3, 4, 5, 6, 7, 9} [2, 6, 0, 66, 22, 8, 4]
2 True
3 False
4 ---------------------------------
5 True

 

判断有没有交集,如果有返回False,否则返回True

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 list_1 = [1,4,5,7,3,6,7,9]
 6 list_1 = set(list_1)
 7 
 8 list_2 = ([2,6,0,66,22,8,4])
 9 print(list_1,list_2)
10 
11 #子集
12 list_3 = set([1,3,7])
13 print(list_3.issubset(list_1))
14 print(list_1.issubset(list_3))
15 
16 print("---------------------------------")
17 list_4 = set([5,6,7,8])
18 print(list_3.isdisjoint(list_4))

执行结果:

1 {1, 3, 4, 5, 6, 7, 9} [2, 6, 0, 66, 22, 8, 4]
2 True
3 False
4 ---------------------------------
5 False

 

子集(issubset)

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 list_1 = [1,4,5,7,3,6,7,9]
 6 list_1 = set(list_1)
 7 
 8 list_2 = ([2,6,0,66,22,8,4])
 9 print(list_1,list_2)
10 
11 #差集
12 print( list_1.intersection(list_2))
13 
14 #子集
15 list_3 = set([1,3,7])
16 print(list_3.issubset(list_1))
17 print(list_1.issubset(list_3))

执行结果:

1 {1, 3, 4, 5, 6, 7, 9} [2, 6, 0, 66, 22, 8, 4]
2 {4, 6}
3 True
4 False

 

交集、并集、差集、对称差集另一种用法

 1 #交集(intersection)
 2 print(list_1 & list_2)
 3 
 4 #并集 union
 5 print(list_2 | list_1)
 6 
 7 #差集 difference (in list 1 but not in list 2)
 8 print(list_1 - list_2)
 9 
10 #对称差集
11 print(list_1 ^ list_2)

 

 常用操作

 1 #!/usr/bin/env python
 2 # -*- coding:utf-8 -*-
 3 #Author: nulige
 4 
 5 list_1 = [1,4,5,7,3,6,7,9]
 6 list_1 = set(list_1)
 7 
 8 list_2 = ([2,6,0,66,22,8,4])
 9 print(list_1,list_2)
10 
11 #添加一项(无序插入)
12 list_1.add(999)
13 print(list_1)
14 
15 #添加多项
16 list_1.update([888,777,555])
17 print(list_1)
18 
19 #pop (删除)
20 # Remove and teturn an arbitrary set element.
21 # 删除一个,并返回一个任意的
22 print(list_1.pop())
23 print(list_1.pop())
24 print(list_1.pop())
25 print(list_1.pop())
26 
27 #discard
28 print( list_1.discard(888) )

执行结果:

1 {1, 3, 4, 5, 6, 7, 9} [2, 6, 0, 66, 22, 8, 4]
2 {1, 3, 4, 5, 6, 7, 999, 9}
3 {1, 3, 4, 5, 6, 7, 999, 9, 777, 555, 888}
4 1
5 3
6 4
7 5
8 None

 

 

 

 

 

 

 

 

 

 

 

 

 

posted @ 2016-11-03 15:33  努力哥  阅读(685)  评论(0编辑  收藏  举报