Python中set的用法
2011-03-25 22:58
309 查看
python 的集合类型和 其他语言类似, 是一个无序不重复元素集,我在之前学过的其他的语言好像没有见过这个类型,基本功能包括关系测试和消除重复元素.集合对象还支持union(联合), intersection(交), difference(差)和sysmmetricdifference(对称差集)等数学运算,和我们初中数学学的集合的非常的相似。
1先看下python 集合 类型的不重复性,这方面做一些去重处理非常的好,比如我们要处理一些数据,想把重复的数据给
去掉,然后在操作的话,可以把它转换成集合类型,然后在由集合类型转换成其他的类型。
a = [2,3,4,2,1]
我们最终要实现的效果是:a = [1,2,3,4]
那我们要怎么实现呢。
1观察下这个列表,我们发现列表里有重复的元素存在,所以我们第一想到的就是去掉列表里的重复元素。
a = set(a)
print a
集合a的结果是:set([1, 2, 3, 4])
下一步要实现排序,我们又想到了一个比较简单的方法,因为集合没有排序方法,而列表有排序的方法,所以我们们把它转换成python 列表 的类型,调用列表的排序方法。
a = list(a)
a.sort()
print a
列表a的结果是:[1,2,3,4]
2union(联合), intersection(交), difference(差)
a = set('abcde')
b = set('bdcf')
求集合的交集:
a & b
结果是:set(['c', 'b', 'd'])
求差集:
a - b
结果是:set(['a', 'e'])
求联合:
a|b
结果是:set(['a', 'c', 'b', 'e', 'd', 'f'])
总结:python 集合和数学的集合概念比较像,经常用在数据的去重处理和一些数据的中转处理。
############################################
快速查找算法:
[python] view
plaincopyprint?
import random
def partition(list_object,start,end):
random_choice = start#random.choice(range(start,end+1)) 把这里的start改成random()效率会更高些
x = list_object[random_choice]
i = start
j = end
while True:
while list_object[i] < x and i < end:
i += 1
while list_object[j] > x:
j -= 1
if i >= j:
break
list_object[i],list_object[j] = list_object[j],list_object[i]
print list_object
#list_object[random_choice] = list_object[j]
#list_object[j] = random_choice
return j
def quick_sort(list_object,start,end):
if start < end:
temp = partition(list_object,start,end)
quick_sort(list_object,start,temp-1)
quick_sort(list_object,temp + 1 ,end)
a_list = [69,65,90,37,92,6,28,54]
quick_sort(a_list,0,7)
print a_list
输出结果:
[python] view
plaincopyprint?
[54, 65, 28, 37, 6, 69, 92, 90]
[6, 37, 28, 54, 65, 69, 92, 90]
[6, 37, 28, 54, 65, 69, 92, 90]
[6, 28, 37, 54, 65, 69, 92, 90]
[6, 28, 37, 54, 65, 69, 90, 92]
[6, 28, 37, 54, 65, 69, 90, 92]
1先看下python 集合 类型的不重复性,这方面做一些去重处理非常的好,比如我们要处理一些数据,想把重复的数据给
去掉,然后在操作的话,可以把它转换成集合类型,然后在由集合类型转换成其他的类型。
a = [2,3,4,2,1]
我们最终要实现的效果是:a = [1,2,3,4]
那我们要怎么实现呢。
1观察下这个列表,我们发现列表里有重复的元素存在,所以我们第一想到的就是去掉列表里的重复元素。
a = set(a)
print a
集合a的结果是:set([1, 2, 3, 4])
下一步要实现排序,我们又想到了一个比较简单的方法,因为集合没有排序方法,而列表有排序的方法,所以我们们把它转换成python 列表 的类型,调用列表的排序方法。
a = list(a)
a.sort()
print a
列表a的结果是:[1,2,3,4]
2union(联合), intersection(交), difference(差)
a = set('abcde')
b = set('bdcf')
求集合的交集:
a & b
结果是:set(['c', 'b', 'd'])
求差集:
a - b
结果是:set(['a', 'e'])
求联合:
a|b
结果是:set(['a', 'c', 'b', 'e', 'd', 'f'])
总结:python 集合和数学的集合概念比较像,经常用在数据的去重处理和一些数据的中转处理。
############################################
快速查找算法:
[python] view
plaincopyprint?
import random
def partition(list_object,start,end):
random_choice = start#random.choice(range(start,end+1)) 把这里的start改成random()效率会更高些
x = list_object[random_choice]
i = start
j = end
while True:
while list_object[i] < x and i < end:
i += 1
while list_object[j] > x:
j -= 1
if i >= j:
break
list_object[i],list_object[j] = list_object[j],list_object[i]
print list_object
#list_object[random_choice] = list_object[j]
#list_object[j] = random_choice
return j
def quick_sort(list_object,start,end):
if start < end:
temp = partition(list_object,start,end)
quick_sort(list_object,start,temp-1)
quick_sort(list_object,temp + 1 ,end)
a_list = [69,65,90,37,92,6,28,54]
quick_sort(a_list,0,7)
print a_list
输出结果:
[python] view
plaincopyprint?
[54, 65, 28, 37, 6, 69, 92, 90]
[6, 37, 28, 54, 65, 69, 92, 90]
[6, 37, 28, 54, 65, 69, 92, 90]
[6, 28, 37, 54, 65, 69, 92, 90]
[6, 28, 37, 54, 65, 69, 90, 92]
[6, 28, 37, 54, 65, 69, 90, 92]
相关文章推荐
- python中set()函数的用法
- Python3:set的用法
- Python中list,tuple,dict,set的区别和用法
- Python中set的用法
- Python中list,tuple,dict,set的区别和用法
- python之函数用法setdefault()
- python set集合的用法
- python中thread的setDaemon、join的用法
- python中thread的setDaemon、join的用法
- Python set()用法
- python中thread的setDaemon、join的用法
- Python中set的用法
- python dict和set 用法
- python中thread的setDaemon、join的用法
- Python中threading的join和setDaemon的区别及用法[例子]
- 【python笔记】python中的list、tuple、set、dict用法简析
- Python中内置数据类型list,tuple,dict,set的区别和用法
- (转)python set 用法
- Python中内置数据类型list,tuple,dict,set的区别和用法
- python中frozenset( )和set()的用法区别