我使用代码实践知识点,同时补充了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。