字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值 key=>value 对用冒号 : 分割,每个键值对之间用逗号 , 分割,整个字典包括在花括号 {} 中 ,格式如下所示:
In [32]: dict = {'key1':'value','key2':'value2'}
In [33]: dict
Out[33]: {'key1': 'value', 'key2': 'value2'}
In [34]: infor = {'name':'zhaosi','age':18,'addr':'dongbei'}
In [35]: infor
Out[35]: {'addr': 'dongbei', 'age': 18, 'name': 'zhaosi'}
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
访问字典里的值
把相应的键放入方括弧,如下实例:
In [1]: infor = {'name':'zhaosi','age':18,'addr':'dongbei'}
In [2]: infor['name']
Out[2]: 'zhaosi'
In [3]: infor['age']
Out[3]: 18
In [4]: infor['addr']
Out[4]: 'dongbei'
In [6]: infor['dongbei']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-6-52a3d45a0a14> in <module>()
----> 1 infor['dongbei']
KeyError: 'dongbei'
修改字典
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:
In [9]: infor
Out[9]: {'addr': 'dongbei', 'age': 18, 'name': 'zhaosi'}
In [10]:
In [10]: infor['addr'] = 'tieling' #更新信息
In [11]: infor
Out[11]: {'addr': 'tieling', 'age': 18, 'name': 'zhaosi'}
In [12]: infor['partner'] = 'xiaoshenyang'#添加信息
In [13]: infor
Out[13]: {'addr': 'tieling', 'age': 18, 'name': 'zhaosi', 'partner': 'xiaoshenyang'}
删除字典元素
能删单一的元素也能清空字典,清空只需一项操作。
显示删除一个字典用del命令,如下实例:
In [19]: del infor['name']
In [20]: infor
Out[20]: {'addr': 'tieling', 'age': 18, 'partner': 'xiaoshenyang'}
#删除一个已删除的key:value,这会引发一个异常,因为用del后字典不再存在
In [21]: del infor['name']
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-21-57e0ef070cdf> in <module>()
----> 1 del infor['name']
KeyError: 'name'
In [22]: infor.clear() #清空字典所有条目
In [23]: infor
Out[23]: {}
In [24]: del infor #删除字典
In [25]: infor
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
<ipython-input-25-d2bc79e10800> in <module>()
----> 1 infor
NameError: name 'infor' is not defined
查看字典中的值
In [26]: infor = {'name':'zhaosi','age':18,'addr':'dongbei'}
In [27]: infor.get('age')
Out[27]: 18
In [28]: infor.get('name')
Out[28]: 'zhaosi'
In [29]: infor.get('dongbei') #获得不存在的键值,不会报错,但返回为空
In [30]: infor['dongbei'] #获得不存在的键值,会报错
---------------------------------------------------------------------------
KeyError Traceback (most recent call last)
<ipython-input-30-52a3d45a0a14> in <module>()
----> 1 infor['dongbei']
KeyError: 'dongbei'
字典中常用操作
In [2]: dict
Out[2]: {'age': 20, 'name': 'laowang'}
In [4]: dict.items()#把键:值当成一个元组,作为列表的一个元素
Out[4]: dict_items([('age', 20), ('name', 'laowang')])
In [5]: dict.values()#获取字典中的值,存在列表中
Out[5]: dict_values([20, 'laowang'])
In [6]: dict.keys()#获取字典中的键,存在列表中
Out[6]: dict_keys(['age', 'name'])
In [7]: A,B = dict.items()#赋值 A,B = dict.items() = [('age', 20), ('name', 'laowang')]
In [9]: A
Out[9]: ('age', 20)
In [10]: B
Out[10]: ('name', 'laowang')
#赋值的两种方式
In [11]: for A,B in dict.items():# A,B = ('age':20)
....: print("A=%s,B=%s" %(A,B))
....:
A=age,B=20
A=name,B=laowang
In [12]: for temp in dict.items():#以下标的方式取值
....: print("%s,%s" %(temp[0],temp[1]))
....:
age,20
name,laowang
for-else使用
2 list = [1,2,3,4,5]
3
4 for i in list:
5 print(i)
6
7 else:
8 print("end===")
9
10 for i in list:
11 print(i)
12 if i == 3:
13 break
14 else:
15 print("end===")
#结果:
注意其他语言没有for-else的用法,可以理解为for-else为一个整体,else可有可无,当有else的时候,for循环执行条件不满足时,跳进else执行,当for循环中有break时,跳出for-else整体。
append和extend区别
In [5]: list1 = [1,2,3,4]
In [6]: list2 = [4,5,6]
In [7]: list1.extend(list2) #合并
In [8]: list1
Out[8]: [1, 2, 3, 4, 4, 5, 6]
In [9]: list1.append(list2)#把list2整体当成一个元素添加
In [10]: list1
Out[10]: [1, 2, 3, 4, 4, 5, 6, [4, 5, 6]]
元组
Python的元组与列表类似,不同之处在于元组的元素不能修改。
元组使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
如下实例:
In [1]: tup1 = ()#创建空元组
In [2]: tup2 = (1,)#创建只有一个元素的元组,注意一定后面加逗号,以免和运算符括号混淆
In [3]: tup3 = (1,2,3,4,5)
In [4]: tup3[0]
Out[4]: 1
In [5]: tup3[0] = 2 #元组不能改
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-5-7b137a5432b2> in <module>()
----> 1 tup3[0] = 2
TypeError: 'tuple' object does not support item assignment
In [6]: tup4 = (9,8,7,6)
In [7]: tup = tup3 + tup4 #元组之间可以相加
In [8]: tup
Out[8]: (1, 2, 3, 4, 5, 9, 8, 7, 6)
元组中的元素值是不允许删除的,但我们可以使用del语句来删除整个元组
元组只能查看、删除和叠加,不能修改(包括增,改)
函数定义及使用
2 def triangle(): #函数定义格式: def 函数名():
3 i = 0
4 while i<=9:
5
6 print("*"*i)
7
8 i+=1
9
10
11 def summator(a,b):#带参数的函数
12 print("%d + %d = %d" %(a,b,a+b))
13
14 triangle() #函数调用
15
16 num1 = int(input("请输入数字1:"))
17 num2 = int(input("请输入数字2:"))
18
19 summator(num1,num2)#函数调用并传参
函数的返回值
def test(a,b,c):
#return a #返回单个值
#return b
#return c
# return (a,b,c) #想要返回多个值,可以使用元组存储
# return [a,b,c] #可以使用列表存储
return {a,b,c} #可以使用字典存储
n1 = int(input("请输入第一个参数:"))
n2 = int(input("请输入第二个参数:"))
n3 = int(input("请输入第三个参数:"))
num = test(n1,n2,n3)
print(num)
#结果
ubuntu@ubuntu-Lenovo:/work/python$ python3 func_paramater.py
请输入第一个参数:11
请输入第二个参数:22
请输入第三个参数:33
(11, 22, 33)
ubuntu@ubuntu-Lenovo:/work/python$ python3 func_paramater.py
请输入第一个参数:22
请输入第二个参数:11
请输入第三个参数:33
[33, 11, 22]
ubuntu@ubuntu-Lenovo:/work/python$ python3 func_paramater.py
请输入第一个参数:22
请输入第二个参数:11
请输入第三个参数:33
{33, 11, 22}
函数可以嵌套使用,学习过其他语言应该比较清楚
局部变量与全局变量
a = 0
def test1():
a = 100 # 函数中定义了局部变量,在本函数中使用默认使用局部变量
print("test1 a = %d" %a)
def test2():
print("test2 a = %d" %a) #函数中没有定义局部变量,在本函数中使用去找全局变量是否定义
#若定义,使用全局变量,若没定义,使用则报错
test1() #函数调用执行
test2() #函数调用执行
#结果:
ubuntu@ubuntu-Lenovo:/work/python$ python3 局部变量.py
test1 a = 100
test2 a = 0
'''
def get_temperature():
temperature = 37 #局部变量定义
return temperature #必须使用一个返回值去接收
def print_temperature(tem):#将接收的返回值传入打印函数
print("温度为:%d" %tem)#打印
result = get_temperature()
print_temperature(result)
'''
temperature = 0 #定义全局变量
def get_temperature():
global temperature #声明使用局部变量
temperature = 37 #
def print_temperature():
print("温度为:%d" %temperature)#打印
get_temperature()
print_temperature()
结果:
ubuntu@ubuntu-Lenovo:/work/python$ python3 局部变量与全局变量区别.py
温度为:37
注意:global声明函数内使用的变量为全局变量,列表和字典可以不用使用global声明,但声明会更好,更警醒
局部变量:定义在函数内部,作用域在函数体内
全局变量:定义在函数外,作用域在整个代码文件中
如果全局变量和局部变量定义的变量名字一样,局部变量使用变量时,默认使用局部定义的变量,除非使用global去声明 ,声明的含义就是对全局变量进行修改,而不是定义。
temperature = 0 #定义全局变量
def get_temperature():
global temperature #声明使用局部变量
temperature = 37 #
def print_temperature():
print("温度为:%d" %temperature)#打印
get_temperature()
print_temperature()
结果:
ubuntu@ubuntu-Lenovo:/work/python$ python3 局部变量与全局变量区别.py
温度为:37