Python相关

Python中的set类型 以及 数组去重问题

2018-06-22  本文已影响25人  DeeJay_Y

Pyhton还有一种新的类型叫set, set中不可以有相同的元素:

li = [1,2,3,1,2,3]

tu = (1,2,3,1,2,3)

se = {1,2,3,1,2,3}

print(se) # {1,2,3}

set的基本操作

name = {'Dee','Jay'}

name.add('Dee')
print(name) # {'Dee', 'Jay'}

name.add('Yang')
print(name) # {'Yang', 'Jay', 'Dee'}

name = {'Dee','Jay'}

name.clear()

print(name) # set()

二者都是删除,remove不存在的元素会抛出异常,但是discard不会

name = {'a','s'}


# name.remove('as') # KeyError: 'as'

name.discard('ass') 
print(name) # {'a', 's'}

name = {'a','s'}

pop_elment = name.pop()

print(pop_elment) # a
print(name) # {'s'}

注意这个pop()只是随机删除一个元素值。

但是对于同一set,随机删除的这个元素是固定的

n1 = {1,2,3}
n2 = {1,2,3,4}

print( n1.issubset(n2) ) # True

print( n2.issuperset(n2) ) # True

返回一个包含2个集合中所有元素的集合

n1 = {1,2,3}
n2 = {4,5,6}

print( n1.union(n2) ) # {1, 2, 3, 4, 5, 6}

返回的是set1和set2的交集

n1 = {1,2,3}

n2 = {1,2,4}

print( n1.intersection(n2) ) # {1,2}

返回包含s1中有,但是s2没有的元素的集合。

n1 = {1,2,3}

n2 = {1,2,4}

print( n1.difference(n2) ) # {3}

返回包含s1和s2中不相同的元素的集合。

n1 = {1,2,3}

n2 = {1,2,4}

print( n1.symmetric_difference(n2) ) # {3,4}

对于数组去重的思考

li = [1,1,2,3,23,234,13]

result = list(set(li))

print(result) # [1, 2, 3, 234, 13, 23]

转换为set再转换为list即可。

li = [1,1,2,3,23,234,13]

result = []

for i in li:
    if i not in result:
        result.append(i)

print(result) # [1, 2, 3, 23, 234, 13]

只能说Python真的太简洁了

上一篇下一篇

猜你喜欢

热点阅读