03-Python的数据类型2

# 集合- set

- 集合定义:

  - 集合就是一个无序不重复元素集,所有元素都包括在花括号里面,各个项用逗号隔开。

  - 集合(set)是0个或多个对象引用的无序组合,这些对象所引用的对象都是可哈希运算的。

  - 集合是可变的,因此可以很容易地添加或者移除数据项,但由于其中的项是无序的,因此没有索引位置的概念。

  - 在集合中,任何元素都没有重复。

- 集合的常见操作:

  - 创建集合:

    - 可以通过调用集合的构造函数来创建集合。

    - 要创建集合,必须使用set构造函数,

# 使用set构造函数注意:
    # set构造函数至多有一个参数
    # 如果没有则会创建空集。
    # 如果有一个参数,此参数必须可迭代,例如是字符串或列表。
s = set()
print(s, type(s))
S = set("abcd")
print(S, type(S))

# 如果只是用大括号定义,则定义的是一个dict 类型
s1 = {}
print(s1, type(s))
# 大括号里一但有元素,否则是一个字典了
s2 = {1,2,3,4,5,6,7}
print(s2, type(s))
# 结果
set() <class 'set'>
{'c', 'b', 'a', 'd'} <class 'set'>
{} <class 'set'>
{1, 2, 3, 4, 5, 6, 7} <class 'set'>

  - 添加元素

    - 通过add(key)方法可以添加元素到set中,可以重复添加。

    - set能过滤重复的元素。

# 过滤元素
s = set([1, 1, 3, 4, 5, 4, 6, 3])
print(s)

# 添加元素
s.add(2)
print(s)
# 结果
{1, 3, 4, 5, 6}
{1, 2, 3, 4, 5, 6}

  - 删除元素:

    - 通过remove(key)方法可以删除元素。

    - discard(key)也可以删除元素。

    - clear()删除集合的所有元素。

s = {9,2,3,4,5,6, "s"}
#  使用remove
s.remove(4)
print(s)
# 使用discard
# 如果删除元素不在集合中,discard不会报错。
s.discard(1) 
print(s)
s.discard(9)
print(s)
# 使用clear(),使集合成为空集
s.clear()
print(s)
# 结果
{2, 3, 5, 6, 9, 's'}
{2, 3, 5, 6, 9, 's'}
{2, 3, 5, 6, 's'}
set()

  - 典型集合函数

    - len()、max()、min()  

# len,max,min都一样使用
s = {1,2,3,4,5,6,7,8,9,1,1}
print(len(s),max(s),min(s))
s1 = {"a", "b", "c"}
print(min(s1))
# max()和min()仅用于特例
# 结果
9 9 1
a

    - 数学集合运算:

      - 交集:intersection()或者使用 & 符号

      - 并集:union()

      - 差集:difference()或者使用 - 符合

      - 对称差:symmetric_difference()

      - 子集:issubset()

      - 超集: issuperset()

s1 = set([1, 2, 3])
s2 = set([1, 2, 3, 4, 5, 6])
# 交集
print(s1.intersection(s2))
# 并集
print(s1.union(s2))
# 差集
print(s1.difference(s2), s2.difference(s1))
# 其余的都类似操作
# 结果
{1, 2, 3}
{1, 2, 3, 4, 5, 6}
set() {4, 5, 6}

  - 常用函数:

    - s.copy():返回一个新集合,它是集合s的浅拷贝。

    - s.update(t): 用t中的元素修改s,即s现在包含s或t的成员。

    - s.intersection_update(t): s中的成员是公共属于s和t的元素。

    - s.symmertric_difference_update(t): s中的成员更新为那些包含在s或t中,但不是s和t共有的元素。

  - 常用运算符:

    - in:判断某元素是否在集合中

    - for:能遍历所有元素。

# for循环
s = {1,2,"i","love","Chian"}
for i in s:
    print(i, end=" ")
    
# 遍历多个值,限于元组
s = {(1,2,3),("i","love","China"),(4,5,6)}
for k,m,n in s:
    print(k,"--",m,"--",n)
for k in s:
        print(k)
# 结果
1 2 love i Chian i -- love -- China
4 -- 5 -- 6
1 -- 2 -- 3
('i', 'love', 'China')
(4, 5, 6)
(1, 2, 3)

    - 另外的一些操作

s = {1, 4, 5, 6, 8, 10}
# 带条件
ss = {i for i in s if i % 2 == 0}
print(ss)
# 多循环
s1 ={1,2,3,4}
s2 = {"i","love ","china"}
s = {m*n for m in s2 for n in s1 if n == 2}
print(s)

# 结果
{8, 10, 4, 6}
{'ii', 'chinachina', 'love love '}

 

猜你喜欢

转载自www.cnblogs.com/cmn-note/p/11184666.html
今日推荐