廖雪峰python学习笔记——循环、使用dict和set

我使用代码实践知识点,同时补充了set里面的集合运算部分的知识。


1.循环

1.1 for...in循环
# range()函数,可以生成一个整数序列start~stop-1,语法:range(start, stop, step)
#The default value of start is 0,and the default value of step is 1.Both can be omitted.

#练习:从1加到100

L=list(range(1,101,1))
sum=0
for x in L:
    sum=sum+x
print(sum)

Out:5050

1.2 while循环
#练习:请利用循环依次对list中的每个名字打印出Hello, xxx!:

L1 = ['Bart', 'Lisa', 'Adam']
n=0
while n<3:   #记得加冒号
    print('Hello,'+L1[n]+'!')
    n=n+1

Out:

Hello,Bart!
Hello,Lisa!
Hello,Adam!

1.3 break 、continue

#break结束循环,continue 跳过当前的这次循环,直接开始下一次循环。
#这两个语句通常都必须配合if语句使用。
#程序陷入“死循环”,可以用Ctrl+C退出程序,或者强制结束Python进程。

代码示例:

n=1
while 20>n>0:
    n=n+1
    if n%2==0:#记得写冒号
        continue # 记得缩进
    print(n)
    if n%3!=0:
        break#到了5就退出循环
    else:#记得写冒号! 
        print('我要学机器学习')

Out:

3
我要学机器学习
5

2.dict

# dict顺序和输入的无关。需要牢记的第一条就是dict的key必须是不可变对象。
# 通过key计算位置的算法称为哈希算法(Hash)。
# 在Python中,字符串、整数等都是不可变的。
# 因此,可以放心地作为key。而list是可变的,就不能作为key。

代码示例:

one_d={'m1':'隐入尘烟','m2':'神探大战','m3':'人生大事'}
one_d['m2']

Out: '神探大战'

#修改value
one_d['m2']='神探'
print(one_d.get('m4',-1))#查看字典里面有无这个key,返回value or -1
print('m3' in one_d)#查看字典里面有无这个key,返回True or False
one_d.get('m2',-1)

Out:

-1
True
'神探'

3.set

# set不是有序的。set和dict类似,也是一组key的集合,但不存储value.
# 由于key不能重复,所以,在set中,没有重复的key。
#重复元素在set中自动被过滤
##添加、删除(pop,remove,discard).pop是随机删除,remove删除不存在的key会报错,discard不会报错

s=set([1,2,2,2,2,3,4,5,6])
print(s)
s.add(9)
print(s)
s.remove(1)#set.remove() takes exactly one argument
print(s)

Out:

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

# 交、并、差、交叉补集:

s1={'a','b','c',1,2,3}
s2={1,2,3,4,'a','b','d','e'}
s3=s1&s2# 交
s33=s1.intersection(s2)# 交
print('交:',s3)
print(s33)

s4=s1|s2#并
s44=s1.union(s2)#并
print('并:',s4)
print(s44)

s51=s1.difference(s2)#差
s52=s2.difference(s1)
print('s1-s2=',s51)
print('s2-s1=',s52)

s6=s1.symmetric_difference(s2)#交叉补集:并集里去掉交集的部分
print('交叉补集:',s6)

Out:

交: {1, 2, 3, 'b', 'a'}
{1, 2, 3, 'b', 'a'}
并: {1, 2, 3, 4, 'd', 'b', 'e', 'a', 'c'}
{1, 2, 3, 4, 'd', 'b', 'e', 'a', 'c'}
s1-s2= {'c'}
s2-s1= {'d', 'e', 4}
交叉补集: {4, 'd', 'e', 'c'}

小结思考题: tuple虽然是不变对象,但试试把(1, 2, 3)和(1, [2, 3])放入dict或set中,并解释结果。

 

#放入set
S1=set([(1,2,3)])#正常输出。
print(S1)
# S2=set((1,[2,3]))#TypeError: unhashable type: 'list'
#放入dict
D1={(1,2,3):1}#正常输出。
D1[(1,2,3)]
#D2={(1,[2,3]):1}#TypeError: unhashable type: 'list'

Out:

{(1, 2, 3)}
1

思考结果:包含了list的tuple包含了可变对象,而dict和set的key是严格不可变的,所以不可以将含有list的tuple作为dict和set的key。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值