Python 30天: 第七天 -- 集合

<< 第六天 || 第八天 >>

第七天

集合

Set 是项目的集合。让我带你回到小学或高中的数学课。集合的数学定义也可以在 Python 中应用。Set 是无序和无索引的不同元素的集合。在 Python 中,set 用于存储唯一项,可以在集合之间找到unionintersectiondifferencesymmetric differencesubsetsuper setdisjoint set

创建一个集合

我们使用大括号 {} 来创建一个集合或 set ()内置函数。

  • 创建一个空集
    # syntax
    st = {}
    # or
    st = set()
  • 使用初始项目创建集合
    # syntax
    st = {'item1', 'item2', 'item3', 'item4'}

例子: 

# syntax
fruits = {'banana', 'orange', 'mango', 'lemon'}

获取集合的长度 

我们使用len()方法来查找集合的长度。

# syntax
st = {'item1', 'item2', 'item3', 'item4'}
len(set)

 例子:

fruits = {'banana', 'orange', 'mango', 'lemon'}
len(fruits)


访问集合中的项目 

我们使用循环来访问项目。我们将在循环部分看到这个

检查项目 

要检查某个项目是否存在于我们在成员资格运算符中使用的列表中。

# syntax
st = {'item1', 'item2', 'item3', 'item4'}
print("Does set st contain item3? ", 'item3' in st) # Does set st contain item3? True

例子: 

fruits = {'banana', 'orange', 'mango', 'lemon'}
print('mango' in fruits ) # True

将项目添加到集合 

一旦创建了一个集合,我们就不能更改任何项目,我们也可以添加额外的项目。

  • 使用add()添加一项
    # syntax
    st = {'item1', 'item2', 'item3', 'item4'}
    st.add('item5')

    例子:

    fruits = {'banana', 'orange', 'mango', 'lemon'}
    fruits.add('lime')
  • 使用update()添加多个项目 update ()允许将多个项目添加到集合中。update ()接受一个列表参数。
    # syntax
    st = {'item1', 'item2', 'item3', 'item4'}
    st.update(['item5','item6','item7'])

    例子:

    fruits = {'banana', 'orange', 'mango', 'lemon'}
    vegetables = ('tomato', 'potato', 'cabbage','onion', 'carrot')
    fruits.update(vegetables)

从集合中移除项目 

我们可以使用remove()方法从集合中删除一个项目。如果找不到该项目,remove()方法将引发错误,因此最好检查该项目是否存在于给定的集合中。但是,discard()方法不会引发任何错误。

# syntax
st = {'item1', 'item2', 'item3', 'item4'}
st.remove('item2')

 pop() 方法从列表中随机删除一个项目,并返回删除的项目。

例子:

fruits = {'banana', 'orange', 'mango', 'lemon'}
fruits.pop()  # removes a random item from the set

 如果我们对删除的项目感兴趣。

fruits = {'banana', 'orange', 'mango', 'lemon'}
removed_item = fruits.pop() 

清除集合中的项目 

如果我们想清除或清空集合,我们使用clear方法。

# syntax
st = {'item1', 'item2', 'item3', 'item4'}
st.clear()

 例子:

fruits = {'banana', 'orange', 'mango', 'lemon'}
fruits.clear()
print(fruits) # set()

删除集合 

如果我们想删除集合本身,我们使用del运算符。

# syntax
st = {'item1', 'item2', 'item3', 'item4'}
del st

例子: 

fruits = {'banana', 'orange', 'mango', 'lemon'}
del fruits

将列表转换为集合 

我们可以将列表转换为集合,并将集合转换为列表。将列表转换为集合会删除重复项,并且只会保留唯一的项目。

# syntax
lst = ['item1', 'item2', 'item3', 'item4', 'item1']
st = set(lst)  # {'item2', 'item4', 'item1', 'item3'} - the order is random, because sets in general are unordered

例子: 

fruits = ['banana', 'orange', 'mango', 'lemon','orange', 'banana']
fruits = set(fruits) # {'mango', 'lemon', 'banana', 'orange'}

加入集合 

我们可以使用union()update()方法连接两个集合。

  • Union 此方法返回一个新集合
    # syntax
    st1 = {'item1', 'item2', 'item3', 'item4'}
    st2 = {'item5', 'item6', 'item7', 'item8'}
    st3 = st1.union(st2)

    例子:

    fruits = {'banana', 'orange', 'mango', 'lemon'}
    vegetables = {'tomato', 'potato', 'cabbage','onion', 'carrot'}
    print(fruits.union(vegetables)) # {'lemon', 'carrot', 'tomato', 'banana', 'mango', 'orange', 'cabbage', 'potato', 'onion'}
  • 更新此方法将一个集合插入给定集合
    # syntax
    st1 = {'item1', 'item2', 'item3', 'item4'}
    st2 = {'item5', 'item6', 'item7', 'item8'}
    st1.update(st2) # st2 contents are added to st1

    例子:

    fruits = {'banana', 'orange', 'mango', 'lemon'}
    vegetables = {'tomato', 'potato', 'cabbage','onion', 'carrot'}
    fruits.update(vegetables)
    print(fruits) # {'lemon', 'carrot', 'tomato', 'banana', 'mango', 'orange', 'cabbage', 'potato', 'onion'}

查找交叉项 

交集返回两个集合中的一组项目。看例子

# syntax
st1 = {'item1', 'item2', 'item3', 'item4'}
st2 = {'item3', 'item2'}
st1.intersection(st2) # {'item3', 'item2'}

例子: 

whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
even_numbers = {0, 2, 4, 6, 8, 10}
whole_numbers.intersection(even_numbers) # {0, 2, 4, 6, 8, 10}

python = {'p', 'y', 't', 'h', 'o','n'}
dragon = {'d', 'r', 'a', 'g', 'o','n'}
python.intersection(dragon)     # {'o', 'n'}

检查子集和超集 

一个集合可以是其他集合的子集或超集:

  • 子集:issubset()
  • 超集:issuperset
    # syntax
    st1 = {'item1', 'item2', 'item3', 'item4'}
    st2 = {'item2', 'item3'}
    st2.issubset(st1) # True
    st1.issuperset(st2) # True

    例子:

    whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
    even_numbers = {0, 2, 4, 6, 8, 10}
    whole_numbers.issubset(even_numbers) # False, because it is a super set
    whole_numbers.issuperset(even_numbers) # True
    
    python = {'p', 'y', 't', 'h', 'o','n'}
    dragon = {'d', 'r', 'a', 'g', 'o','n'}
    python.issubset(dragon)     # False

查找两组之间的对称差异 

它返回两个集合之间的对称差异。这意味着它返回一个集合,其中包含两个集合中的所有项目,但两个集合中都存在的项目除外,数学上:(A\B) ∪ (B\A)

# syntax
st1 = {'item1', 'item2', 'item3', 'item4'}
st2 = {'item2', 'item3'}
# it means (A\B)∪(B\A)
st2.symmetric_difference(st1) # {'item1', 'item4'}

例子:

whole_numbers = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
some_numbers = {1, 2, 3, 4, 5}
whole_numbers.symmetric_difference(some_numbers) # {0, 6, 7, 8, 9, 10}

python = {'p', 'y', 't', 'h', 'o','n'}
dragon = {'d', 'r', 'a', 'g', 'o','n'}
python.symmetric_difference(dragon)  # {'r', 't', 'p', 'y', 'g', 'a', 'd', 'h'}

加入集合 

如果两个集合没有一个或多个共同项,我们称它们为不相交的集合。我们可以使用isdisjoint()方法检查两个集合是联合的还是不相交的。

# syntax
st1 = {'item1', 'item2', 'item3', 'item4'}
st2 = {'item2', 'item3'}
st2.isdisjoint(st1) # False

例子: 

even_numbers = {0, 2, 4 ,6, 8}
even_numbers = {1, 3, 5, 7, 9}
even_numbers.isdisjoint(odd_numbers) # True, because no common item

python = {'p', 'y', 't', 'h', 'o','n'}
dragon = {'d', 'r', 'a', 'g', 'o','n'}
python.isdisjoint(dragon)  # False, there are common items {'o', 'n'}

🌕你是一颗冉冉升起的新星。您刚刚完成第 7 天的挑战,并且您在通往卓越的道路上领先 7 步。现在为你的大脑和肌肉做一些练习。

练习:第七天

# sets
it_companies = {'Facebook', 'Google', 'Microsoft', 'Apple', 'IBM', 'Oracle', 'Amazon'}
A = {19, 22, 24, 20, 25, 26}
B = {19, 22, 20, 25, 26, 24, 28, 27}
age = [22, 19, 24, 25, 26, 24, 25, 24]

练习:1级 

  1. 找出集合 it_companies 的长度
  2. 将“推特”添加到 it_companies
  3. 一次将多个 IT 公司插入集合 it_companies
  4. 从集合 it_companies 中删除其中一家公司
  5. remove 和 discard 有什么区别

练习:2级

  1. 加入 A 和 B
  2. 找到A路口B
  3. 是 B 的子集
  4. A 和 B 是不相交的集合
  5. 加入 A 与 B 和 B 与 A
  6. A和B之间的对称差异是什么
  7. 完全删除集合

练习:3级 

  1. 将年龄转换为集合,比较列表和集合的长度,哪个更大?
  2. 解释以下数据类型之间的区别:字符串、列表、元组和集合
  3. 我是一名教师,我喜欢启发和教导人们。句子中使用了多少独特的词?使用拆分方法并设置以获得唯一的单词。

 🎉恭喜!🎉

<< 第六天 || 第八天 >>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

舍不得,放不下

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值