python课程第三周小结_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 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 inold_dict:for j innew_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}

原文:http://www.cnblogs.com/Caesary/p/5519480.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值