Datawhale学习计划:python基础知识三

一,字典

字典是另一种可变容器模型,且可存储任意类型对象。

1,字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

d = {key1 : value1, key2 : value2 }
dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

print("dict['Name']: ", dict['Name'])
print("dict['Age']: ", dict['Age'])

2,修改字典

dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}

dict['Age'] = 8  # 更新 Age
dict['School'] = "菜鸟教程"  # 添加信息

print("dict['Age']: ", dict['Age'])
print("dict['School']: ", dict['School'])

del dict['Age']#删除某个键值对
print(dict)

dict.clear() #清楚字典
print(dict)

del dict     #删除字典
print(dict)

3,字典键的特性

字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

两个重要的点需要记住:

1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。

dict={'python':34,'java':87,'python':99}
print(dict)

2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行.

dict={['python']:34,'java':87,'python':99}
print(dict)

4,方法

1)深拷贝,浅拷贝

#浅拷贝和深拷贝
#浅拷贝只拷贝父类 不拷贝子类
a={1:[1,2,3]}
print('=======原始值地址========')
print('id(a)=',id(a))
print('id(a[1])=',id(a[1]))
b=a
#复制全都一样
print('====普通赋值=====')
print('id(b)=',id(b))
print('id(b[1])=',id(b[1]))
 
c=a.copy()
#父类的地址不一样 因为拷贝了
print('====浅拷贝=====')
print('id(c)=',id(c))
print('id(c[1])=',id(c[1]))
d=copy.deepcopy(a)
#地址都不一样
print('====深拷贝=====')
print('id(d)=',id(d))
print('id(d[1])=',id(d[1]))

2)dict.fromkeys(seq[,value]) 用序列值创建新字典

seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq)
print("新的字典为 : %s" % dict)
dict = dict.fromkeys(seq, 10)
print("新的字典为 : %s" % dict)

3)dict.get(key, default=None) 返回键的值

dict = {'Name': 'Runoob', 'Age': 27}
print ("Age 值为 : %s" %  dict.get('Age'))
print ("Sex 值为 : %s" %  dict.get('Sex'))
print ("Sex 值为 : %s" %  dict.get('Sex', "NA"))

4)dict.items()    以列表返回可遍历的(键, 值) 元组数组

dict2={'python':34,'java':87}
print(dict2.items())
for i in dict2.items():
    print(i)
for i,j in dict2.items():
    print(i,j)

5)key in dict  查询键是否在字典里,不能用于判断值

dict2={'python':34,'java':87}
print('python' in dict2)
print(34 in dict2) 

6)dict.keys()  返回键

dict1={'me':23,'you':(3,4),'he':['I','you'],45:78}
print(dict1.keys())
for i in dict1.keys():
    print(i)

7)dict.update(dict2)   将dict2的键值对添加到dict中

dict1={'me':23,'you':(3,4),'he':['I','you'],45:78}
dict2={'python':34,'java':87}
dict1.update(dict2)
print('更新后的dict1:',dict1)

8)dict.values()   返回值

dict1={'me':23,'you':(3,4),'he':['I','you'],45:78}
print(dict1.values())
for i in dict1.values():
    print(i)

9)dict.pop(key)  返回删除的值

dict1={'me':23,'you':(3,4),'he':['I','you'],45:78}
dict1.pop('me')
print(dict1)

10)dict.popitem() 随意删除某键值对并返回值(一般删除末尾对)

dict1={'me':23,'you':(3,4),'he':['I','you'],45:78}
dict1.popitem()
print(dict1)

或者

二,集合

集合(set)是一个无序的不重复元素序列。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。

创建格式:

parame = {value01,value02,...}
或者
set(value)
a = set('abracadabra')
print(a)

集合的基本操作

添加元素.add()

thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook")
print(thisset)

还有一个方法,也可以添加元素,且参数可以是列表,元组,字典等,语法格式如下:

s.update( x )
thisset = set(("Google", "Runoob", "Taobao"))
thisset.update({1,3})
print(thisset)

thisset.update([1,4],[5,6])
print(thisset)

移除元素 s.remove( x )

thisset = set(("Google", "Runoob", "Taobao"))
thisset.remove("Taobao")
print(thisset)

清空集合

s.clear()
thisset = set(("Google", "Runoob", "Taobao"))
thisset.clear()
print(thisset)

三,判断条件

year = int(input("输入一个年份: "))
if (year % 4) == 0:
   if (year % 100) == 0:
       if (year % 400) == 0:
           print("{0} 是闰年".format(year))   # 整百年能被400整除的是闰年
       else:
           print("{0} 不是闰年".format(year))
   else:
       print("{0} 是闰年".format(year))       # 非整百年能被4整除的为闰年
else:
   print("{0} 不是闰年".format(year))

四,三目表达式

c=a if a>b else b

#让两个list中的偶数分别相加,应该结果是2+6,4+6,2+8,4+8
x=[1,2,3,4]
y=[5,6,7,8]
res=[i+j for i in x for j in y if i%2==0 and j%2==0]
print(res)

五,循环语句

循环控制语句可以更改语句执行的顺序。Python支持以下循环控制语句:

猜你喜欢

转载自blog.csdn.net/fanzonghao/article/details/89036407