python周报第三周

Posted 爱神灬小凯

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python周报第三周相关的知识,希望对你有一定的参考价值。

1.set 集合

1.set 方法解析

1.定义一个set

s1 = "caesary"
set1 = set(s1)
print(set1)
l1 = [1,2,3,4]
set2 = set(l1)
print(set2)
t1 = (1,1,1,2,3)
set3 = set(t1)
print(set3)

 

执行结果如下

{y, e, s, r, c, a}
{1, 2, 3, 4}
{1, 2, 3}

总结:set集合有去重功能,类似awk数组;并且是无序的,类似字典。

2.add()

print(set1)
set1.add("x")
print(set1)

执行结果如下

{e, a, s, c, r, y}
{e, a, s, c, r, x, y}

总结:add()方法可以在集合中添加一个元素。

3.clear()

print(set1)
set1.clear()
print(set1)

执行结果如下

{s, a, r, c, e, y}
set()

总结:clear()方法可以清空一个集合。

4.copy()

print(set1)
set4 = set1.copy()
print(set1,set4)

执行结果如下

{s, a, y, c, r, e}
{s, a, y, c, r, e} {c, r, e, s, a, y}

 

总结:copy()可以浅拷贝一个集合。

5.difference()、difference_update()

print(set2,set3)
set5 = set2.difference(set3)
print(set5,set2)
set3.difference_update(set2)
print(set2,set3)

执行结果如下

{1, 2, 3, 4} {1, 2, 3, 5}
{4} {1, 2, 3, 4}
{1, 2, 3, 4} {5}

总结:difference()方法,是从本集合中删除和参数集合共同的元素并赋给一个集合,本集合和参数集合不变。difference_update()方法,是从本集合中删除和参数集合共同的元素,作用在本集合上。

6.discard()、remove()

共同点:

print(set3)
set3.discard(2)
print(set3)
set3.remove(1)
print(set3)

执行结果如下

{1, 2, 3, 5}
{1, 3, 5}
{3, 5}

不同点:

t1 = (1,1,1,2,3,5)
set3 = set(t1)

print(set3)
set3.discard(6)
print(set3)
set.remove(6)
print(set3)

执行结果如下

Traceback (most recent call last):
  File "/Users/liukai/PycharmProjects/s13/day3/blog.py", line 49, in <module>
    set.remove(6)
TypeError: descriptor remove requires a set object but received a int
{1, 2, 3, 5}
{1, 2, 3, 5}

总结:discard()、remove()方法都是删除一个元素,不同的是,discard()是有则删除,无则pass,而remove()方法是有则删除,无则异常,强烈建议使用discard()

7.intersection()、intersection_update()

print(set2,set3)
set7 = set2.intersection(set3)
print(set7)

执行结果如下

{1, 2, 3, 4} {1, 2, 3, 5}
{1, 2, 3}

总结:intersection()方法,返回一个本集合和参数集合的交集集合。

print(set2,set3)
set2.intersection_update(set3)
print(set2)

执行结果如下

{0, 1, 2, 3, 4} {1, 2, 3, 5}
{1, 2, 3}

总结:intersection_update()方法,返回一个本集合和参数集合的交集集合,作用于本集合。

8.update()

print(set2)
set2.update({0,0,0,9})
print(set2)

执行结果如下

{1, 2, 3}
{0, 1, 2, 3, 9}

总结:update()方法直接更新一个集合到本集合并去重。

 

2.set应用举例分析

有两个字典,需要把新字典更新到老字典:

old_dict = {
    "#1":8,
    "#2":4,
    "#4":2,
}

new_dict = {
    "#1":4,
    "#2":4,
    "#3":2,
}

解题思路:

1.需要求出老字典需要删除的条目。

2.需要求出新字典需要新增到老字典的条目。

3.需要求出新字典需要更新到老字典的条目。

解题方法:

###set(),把老字典的key转化成一个集合
old_key_set = set(old_dict.keys())
###set(),把新字典的key转化成一个集合
new_key_set = set(new_dict.keys())
###定义一个需要删除的集合,set的difference()求出在老字典的key而不在新字典的key的集合
remove_set = old_key_set.difference(new_key_set)
###删除老字典的条目
del old_dict["".join(list(remove_set))]
###定义一个需要新增的集合
update_set = new_key_set.difference(old_key_set)
###新增新字典的条目
old_dict["".join(list(update_set))] = new_dict["".join(list(update_set))]
###查找需要更新的key,我采取的方法是遍历两个字典
for i in old_dict:
    for j in new_dict:
        if i == j and old_dict[i] != new_dict[j]:
            old_dict[i] = new_dict[j]
print(old_dict)

结果:

{#1: 4, #2: 4, #3: 2}

 

以上是关于python周报第三周的主要内容,如果未能解决你的问题,请参考以下文章

团队作业第三周周报

python学习第三周总结

第三周python学习笔记 set 集

python第三周学习内容

第三周-第03章节-Python3.5-集合及其运算

python之路,Python基础篇3 函数(第三周)