python学习笔记1

初识Python

IDLE是一个Python Shell,shell就是外壳的意思,是一个通过键入文本与程序交互的途径。

#将一个字符串乘以8,则连续输出8个这样的字符串。

>>> print("I love Python!\n"*8)

I love Python!

I love Python!

I love Python!

I love Python!

I love Python!

I love Python!

I love Python!

I love Python!

BIF==Built-in functions

#可以看到Python中的BIF,但并不全是

dir(_builtins_)

#查看某BIF的用法

help(input) help(int)

变量:其实就是社会上的一个名字,把一个值赋值给一个名字时,Ta会存储在内存中,称之为变量(variable).

Python和大多数计算机语言做法稍有不同,Ta并不是把值存储在变量中,而更像是把名字贴在上面。(Python没有“变量”,只有“名字”)

#不需要为变量定义类型,Python会智能识别值的类型

>>> teacher='小鱼儿'

>>> print(teacher)

小鱼儿

>>> teacher='大鱼儿'

>>> print(teacher)

大鱼儿

>>> type(teacher)

 #teacher的类型

字符串加字符串的语法称为拼接

>>> a='你好'

>>> b='Python!'

>>> c=a+b

>>> print(c)

你好Python!

变量使用前需要先进行赋值,负责会出现错误

>>> first #first未进行赋值

Traceback (most recent call last):

  File "", line 1, in

    first

NameError: name 'first' is not defined

变量的命名尽量要见文知意,与社会相联系

两个不同类型的值不能相加,否则会出现错误

>>> '5'+'8'

'58'

>>> '5'+8

Traceback (most recent call last):

  File "", line 1, in

    '5'+8

TypeError: Can't convert 'int' object to str implicitly

转义字符(\)对字符串的引号进行转义

>>> 'let\'s go!'

"let's go!"

在对多个反斜杠进行转义的过程中可以使用r,字符串的结尾不能加反斜杠,否则会报错,只能通过其他的方式解决。

>>> str=r'C:\now'

>>> str

'C:\\now'

三重双引号实现长字符串的换行操作

>>> str="""白日依山尽,

黄河入海流。

欲穷千里目,

更上一层楼。

"""

>>> str

'白日依山尽,\n黄河入海流。\n欲穷千里目,\n更上一层楼。\n'

>>> print(str)

白日依山尽,

黄河入海流。

欲穷千里目,

更上一层楼。

Python判断机制

>>> 1<3

True

>>> 1>3

False

>>> 1!=1

False

>>> 1==1

True

条件分支语法:

if条件:

条件为真(True)执行操作  #Python通过空格或制表符来控制代码块

else:

条件为假(False)执行操作

while循环语法:

while条件:

条件为真(True)执行操作

random模块

>>> import random

>>> ta=random.randint(1,10)

>>> ta

7

数据类型:整型,浮点型,布尔类型,e记法

e记法

>>> 1.5e11

150000000000.0

布尔类型计算

>>> True+True

2

>>> True+False

1

>>> True*False

0

>>> True/False#被除数不能为0,否则报错

Traceback (most recent call last):

  File "", line 1, in

    True/False

ZeroDivisionError: division by zero

>>> False/True

0.0

类型转换:int(),str(),float()

关于类型信息:type(),isinstance()

>>> a='skd'

>>> isinstance(a,str)如果a的类型与传入的类型一致则返回True

True

>>> isinstance(a,int)

False

算术运算符:+,-,*,/,%,**(求幂),//.

>>> 10//8

1

>>> 3.0//2

1.0

逻辑操作符:and,or,not

断言(assert)当关键字后面条件为假时,程序会自动崩溃并抛出AssertionError的异常。

>>> assert 3>4

Traceback (most recent call last):

  File "", line 1, in

    assert 3>4

AssertionError

>>> assert 3<4 #为真时,直接跳过

>>>

三元操作符:small=x if x

for循环体语法:

for目标 in 表达式:

循环体

>>> favourite='Fisher'

>>> for i in favourite:

print(i,end=' ')

F i s h e r

内置函数:range([start,]stop[,step=1])

这个BIF有三个参数,其中括号括起来的两个表示这两个参数是可选的。

step=1表示第三个参数的值默认值是1

range这个BIF的作用是生成一个从start参数的值开始到stop参数的值结束的数字序列

>>> list(range(5))

[0, 1, 2, 3, 4]

>>> for each in range(5):

print(each)

0

1

2

3

4

>>> list(range(1,10))

[1, 2, 3, 4, 5, 6, 7, 8, 9]

两个关键字:break,continue

break:终止整个循环

for i in range(10):

    if i%2!=0:

        print(i)

        continue

    i+=2

    print(i)

列表:整数,浮点数,字符串,对象。

定义

>>> member=['Python','语言','精通','使用']#在列表中可以存放任何种类型的数据

>>> member

['Python', '语言', '精通', '使用']

>>> number=[1,2,3,4,5]

>>> number

[1, 2, 3, 4, 5]

>>> mix=[1,'Python','图书馆',[3.14,5]]#也可以存放子列表

>>> mix

[1, 'Python', '图书馆', [3.14, 5]]

>>> empty=[]#创建一个空的列表

>>> empty

[]

向列表中添加数据

>>> member.append('标牌') #向member列表中添加数据

>>> member

['Python', '语言', '精通', '使用', '标牌']#所添加的数据默认放在列表的尾部

>>> len(member)#获取列表member的长度

5

append()方法不能同时把两个元素加入列表中,所以就引入了extend()方法

>>> member.extend('牡丹','菊花')#将一组元素以列表的形式加入列表

Traceback (most recent call last):

  File "", line 1, in #否则会报错

member.extend('牡丹','菊花')

TypeError: extend() takes exactly one argument (2 given)

>>> member.extend(['牡丹','菊花'])

>>> member

['Python', '语言', '精通', '使用', '标牌', '牡丹', '菊花']#和append()同样是追加到列表的末尾

为了解决元素插入指定位置的问题,提出了insert()方法

>>> member.insert(1,'大家好')#把字符串插入位置为1的地方

>>> member

['Python', '大家好', '语言', '精通', '使用', '标牌', '牡丹', '菊花']

从列表中获取元素

>>> member[0]

'Python'

>>> member[1]   #获取1位置的值

'大家好'

>>> temp=member[0]#交换位置0和1中元素的值

>>> member[0]=member[1]

>>> member[1]=temp

>>> member

['大家好', 'Python', '语言', '精通', '使用', '标牌', '牡丹', '菊花']

从列表中删除元素

>>> member.remove('大家好')#需要知道你要删除的元素的值,如果列表中不存在则会报错

>>> member

['Python', '语言', '精通', '使用', '标牌', '牡丹', '菊花']

>>> del member[2]#删除位置2中元素的值

>>> member

['Python', '语言', '使用', '标牌', '牡丹', '菊花']

>>>del member#删除整个列表,如果再次使用此列表,需要重新定义

Python的列表是利用栈的存储结构实现的,pop()可以弹出列表的尾部元素

>>> member.pop()

'菊花'

>>> member

['Python', '语言', '使用', '标牌', '牡丹']

>>> a=member.pop(1)#弹出1位置的值并赋值给a

>>> member

['Python', '使用', '标牌', '牡丹']

>>> a

'语言'

列表分片(Slice)

>>> member[1:3]#不包含3

['使用', '标牌']

>>> member[:3]

['Python', '使用', '标牌']

>>> member[1:]#包含1

['使用', '标牌', '牡丹']

>>> member[:]

['Python', '使用', '标牌', '牡丹']

操作符

比较操作符

逻辑操作符

连接操作符

重复操作符

成员关系操作符


比较操作符

>>> list1=[123]

>>> list2=[234]

>>> list1>list2

False

>>> list1=[123,456]

>>> list2=[234,123]

>>> list1>list2  #只比较了列表中的第一个元素

False

逻辑操作符

>>> (list1

True

连接操作符

>>> list4=list1+list2#列表的拼接操纵,限制为相同的类型

>>> list4

[123, 456, 234, 123]

>>> list3

[123, 456]

重复操作符

>>> list3*3#列表的扩展,但不会改变原列表

[123, 456, 123, 456, 123, 456]

>>> list3*=3#把列表进行扩展,并赋予原有的列表

>>> list3

[123, 456, 123, 456, 123, 456]

>>> list3*=5

>>> list3

[123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456]

成员关系操作符

>>> 123 in list3

True

>>> '小鱼儿'not in list3

True

>>> 123 not in list3

False

>>> list5=[123,['国花','牡丹'],456]

>>> '国花' in list5

False

>>> '国花' in list5[1]#人为的引入得以解决此类问题

True

>>> list5[1][1]

'牡丹'


列表的内置函数:

>>> list3

[123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456, 123, 456]

>>> list3.count(123)#获取列表中某值出现的次数

15

>>> list3.index(123)#获取列表中某值出现的第一个位置

0

>>> list3.index(123,3,7)#获取列表中123在第三到第七的位置中,第一次出现的位置

reverse()把整个列表原地翻转

>>> list5

[123, ['国花', '牡丹'], 456]

>>> list5.reverse()

>>> list5

[456, ['国花', '牡丹'], 123]

sort()方法对整个列表进行从小到大的排序

>>> list6=[9,6,7,5,11,36]

>>> list6.sort()

>>> list6

[5, 6, 7, 9, 11, 36]

>>> list6.sort(reverse=True)#借助reverse实现从大到小排序

>>> list6

[36, 11, 9, 7, 6, 5]

分片的优势在于脱离原有的列表的控制

>>> list6

[36, 11, 9, 7, 6, 5]

>>> list7=list6[:]

>>> list7

[36, 11, 9, 7, 6, 5]

>>> list8=list6

>>> list8

[36, 11, 9, 7, 6, 5]

>>> list6.sort()

>>> list6

[5, 6, 7, 9, 11, 36]

>>> list8

[5, 6, 7, 9, 11, 36]

>>> list7

[36, 11, 9, 7, 6, 5]

元组(带上枷锁的列表)tuple

元组和列表基本相似

元组是不能随意插入或者删除一个元素,元组是不可改变的

创建一个元组,元组的创建关键不在括号,而在逗号

>>> tuple1=(1,2,3,4,5,6,7,8)

>>> tuple1

(1, 2, 3, 4, 5, 6, 7, 8)

>>> temp=(1)

>>> temp

1

>>> type(temp)

>>> temp2=2,3,4

>>> type(temp2)

>>> temp=()#创建一个空的元组

>>> type(temp)

>>> temp=(1,)

>>> type(temp)

>>> temp=1,

>>> type(temp)

>>> 8*(8)

64

>>> 8*(8,)

(8, 8, 8, 8, 8, 8, 8, 8)

通过分片以及重新分配来实现元组的更新

>>> temp=('小鱼儿','黑夜','迷途','小布丁')

>>> temp=temp[:2]+('怡景',)+temp[2:]#添加部分中的逗号是不能缺少的

>>> temp

('小鱼儿', '黑夜', '怡景', '迷途', '小布丁')

>>>del temp#删除整个元组

也可以通过切片的方法间接的删除元组的元素

>>> temp

('小鱼儿', '黑夜', '怡景', '迷途', '小布丁')

>>> temp=temp[:2]+temp[3:]

>>> temp

('小鱼儿', '黑夜', '迷途', '小布丁')

元组的相关操作符,和列表是一样的

格式化

format()

字段0,1,2分别用花括号括起来,通过后面的位置参数传递给format()方法,然后再通过format()方法进行格式化整理,最后得到了最终的目标。

>>> "{0} love {1}.{2}".format("I","Fish","com")

'I love Fish.com'

使用关键字参数进行传递

>>> "{a} love {b}.{c}".format(a="I",b="Fish",c="com")

'I love Fish.com'

综合位置参数以及关键字参数的传递

>>> "{0} love {b}.{c}".format("I",b="Fish",c="com")

'I love Fish.com'   #需要注意的是位置参数一定要在关键字参数之前,否则会报错

利用转义打印反斜杠

>>> print('\ta')#此处是缩进8格

a

>>> print('\\')

\

打印花括号

>>> "{{0}}".format("不打印")

'{0}'#和两个反斜杠是一样的道理,因为0被解释掉了,所以后面的值无法打印

0后面的冒号表示格式化符号的开始,后面就是格式化,此处打印的为定点数

>>> '{0:.1f}{1}'.format(26.658,'GB')

'26.7GB'

格式化字符及其ASCII码%c

>>> '%c'%97

'a'

>>> '%c % c %c'%(97,98,99)#其中的一串数字必须用括号括起来

'a b c'

格式化字符串%s

>>> '%s'%'I love fisher'

'I love fisher'

格式化整数

>>> '%d + %d = %d' % (4,5,4+5)

'4 + 5 = 9'

格式化无符号八进制数%o

>>> '%o' % 10

'12'

格式化无符号十六进制%x,%X(大写用的)

>>> '%x' % 10

'a'

>>> '%X' % 10

'A'

%f格式化定点数,可指定小数点后的精度

%e用科学技术法格式化定点数

%g根据值的大小决定使用%f或%e

>>> '%f' % 27.658

'27.658000'

>>> '%e' % 27.658

'2.765800e+01'

>>> '%E' % 27.658

'2.765800E+01'

>>> '%g' % 27.658

'27.658'

格式化操作辅助命令

m.n  m表示指定的宽度,n表示小说点后的位数。

‘-’用于左对齐,

‘+’在正数面前显示加号

‘#’在八进制前面显示‘0’,十六进制前面显示‘0x’或‘0X’

>>> '%5.1f' % 27.658

' 27.7'

>>> '%.2e' % 27.658

'2.77e+01'

>>> '%10d' % 5

'         5'

>>> '%-10d' % 5

'5         '

>>> '%+d' % 5

'+5'

>>> '%+d' % -5

'-5'

>>> '%#o' % 10

'0o12'

>>> '%#X' % 10

'0XA'

列表、元组和字符串的共同点

--都可以通过索引得到每一个元素

--默认索引值总是从0开始

--可以通过分片的方法得到一个范围内的元素的集合

--有很多共同的操作符(重复操作符,拼接操作符,成员关系操作符)

把这三者统称为序列

序列常见的内置方法(BIF)

list()把一个可迭代对象转换为列表

>>> a=list()

>>> a

[]

>>> b='My Python'

>>> b=list(b)

>>> b

['M', 'y', ' ', 'P', 'y', 't', 'h', 'o', 'n']

>>> c=(1,1,2,3,5,8,13,21)

>>> c=list(c)

>>> c

[1, 1, 2, 3, 5, 8, 13, 21]

tuple()把一个可迭代对象转换为元组

str(obj)把obj对象转换为字符串

max()返回序列或者参数集合中的最大值

>>> max(c)

21

>>> max(b)

'y'

>>> numbers

[1, 5, 8, -85, 14, 28, 'a']

>>> max(numbers)#两种不同类型的值无法进行比较

Traceback (most recent call last):

  File "", line 1, in

    max(numbers)

TypeError: unorderable types: str() > int()

min()返回序列或者参数集合中的最小值

sum(iterable[,start=0])返回序列iterable和可选参数start的总和

>>> sum(c)

54

>>> sum(c,10)

64

sorted()默认是从小到大排序

reversed()返回的是一个迭代器对象,可以通过list()方式实现输出

>>> reversed(c)

>>> list(reversed(c))

[21, 13, 8, 5, 3, 2, 1, 1]

enumerate()枚举方法

>>> enumerate(c)

>>> list(enumerate(c))

[(0, 1), (1, 1), (2, 2), (3, 3), (4, 5), (5, 8), (6, 13), (7, 21)]#在每个元素前加了一个索引值

zip()

>>> a=[1,2,3,4,5,6,7,8,9]

>>> b=[4,5,6,7,8]

>>> zip(a,b)

>>> list(zip(a,b))

[(1, 4), (2, 5), (3, 6), (4, 7), (5, 8)]

函数

我的第一个Python函数:

>>> def MyFirstFunction():

print('这是我创建的第一个函数!')

print('我表示很激动!')

>>> MyFirstFunction()

这是我创建的第一个函数!

我表示很激动!

函数的参数的引用

>>> def MySecondFunction(name):

print(name + '我爱你!')

>>> MySecondFunction('Python')

Python我爱你!

一个简单的加法的函数

>>> def add(num1,num2):

result=num1+num2

print(result)

>>> add(2,6)

8

>>> def add(num1,num2):

return(num1+num2)#指定一个返回值


>>> print(add(4,5))#打印返回值

9

函数文档和注释不同

>>> def WordFunction(name):

‘函数定义过程中的name是叫形参'  #函数文档方便其他人了解这个函数的定义

#因为Ta只是一个形式,表示占据一个参数位置  #此处为注释,不被编译

print('传递进来的' + name + '叫做实参,因为Ta是具体的参数值!')

>>> WordFunction('黄河')

传递进来的黄河叫做实参,因为Ta是具体的参数值!

>>> help(WordFunction)

Help on function WordFunction in module __main__:

WordFunction(name)

函数定义过程中的name是叫形参

关键字参数:其实就是给参数下了一个定义

>>> def SaySome(name,words):

print(name + '-->' + words)

>>> SaySome('李宁','一切皆有可能!')

李宁-->一切皆有可能!

>>> SaySome('一切皆有可能!','李宁')

一切皆有可能!-->李宁

>>> SaySome(words='一切皆有可能!',name='李宁')

李宁-->一切皆有可能!

收集参数(也可称可变参数)

>>> def test(*params):#params为收集参数

print('参数的长度是:',len(params))

print('第二个参数是:',params[1])


>>> test(1,'黄河',3.14,5,6)    #把参数打包为一个元组的形式

参数的长度是:5

第二个参数是:黄河

>>> def test(*params,exp):

print('参数的长度是:',len(params),exp)

print('第二个参数是:',params[1])

>>> test(1,'黄河',3.14,5,6)    #exp需要通过关键字参数的形式来获取值

Traceback (most recent call last):

  File "", line 1, in

test(1,'黄河',3.14,5,6)

TypeError: test() missing 1 required keyword-only argument: 'exp'

>>> test(1,'黄河',3.14,5,6,exp=8)

参数的长度是:5 8

第二个参数是:黄河

函数和过程:有返回值的为函数,没有返回值的为过程。

Python只有函数没有过程。

>>> def hello():

print('大家好!')

>>> temp=hello()

大家好!

>>> temp

>>> print(temp)#返回的是none

None

>>> type(temp)

Python是动态的确定类型,可以返回多个值

>>> def back():

return [1,'黄河',3.14]

>>> back()

[1, '黄河', 3.14]

>>> def back():

return 1,'黄河',3.14

>>> back()

(1, '黄河', 3.14)

变量:局部变量,全局变量。

1.在函数里定义的参数为局部变量,只能在函数内生效,脱离函数,便不存在了。

2.但是全局变量可以在函数中生效,所以对全局变量的使用需要十分注意

3.当试图在函数中修改全局变量的时候,它会在函数中自动创建一个和全局变量名字一样的局部变量,并赋予新值,退出函数后,全局变量的值不会有所变动。

>>> ================================ RESTART ================================

1.请输入原价:100

请输入折扣率:0.8

打折后的价格是:80.0#此处试图打印局部变量的值,出现错误

Traceback (most recent call last):

File "E:/Python/局部变量和全局变量.py", line 8, in

print('这里试图打印局部变量final_price的值:',final_price)

NameError: name 'final_price' is not defined

>>> ================================ RESTART ================================

>>>

2.请输入原价:100

请输入折扣率:0.6

这里试图打印全局变量old_price的值: 100.0#在函数中打印全局变量

打折后的价格是:60.0

>>> ================================ RESTART ================================

>>>

3.请输入原价:100

请输入折扣率:0.5

修改后old_price的值是1: 50#函数中自动创建和全局变量一样的局部变量

打折后的价格是:50.0

修改后old_price的值是2: 100.0#脱离函数后的全局变量

global关键字:通过global关键字可以将函数中的变量变为全局变量

>>> def MyFun():

global count

count=5

print(count)

>>> MyFun()

5

>>> count

5

内嵌函数:允许在函数中创建另一个函数,也可称为内部函数。

>>> def fun1():

print('fun1正在被调用...')

def fun2():    #此函数脱离外部函数,就无法使用

print('fun2正在被调用...')

fun2()

>>> fun1()

fun1正在被调用...

fun2正在被调用...

内部函数整个作用域都在外部函数之内的

闭包:如果在一个内部函数里,对外部作用域(但不是在全局作用域)的变量进行引用,则内部函数就会被认为是闭包。

>>> def FunX(x):

def FunY(y):

return x*y

return FunY


>>> i=FunX(5)

>>> type(i)

>>> i(5)

25

>>> FunX(5)(6)

30

在内部函数中使用关键字nolocal实现对局部变量的合法使用

>>> def fun1():

x=5

def fun2():

nonlocal x

x*=x

return x

print('此时函数中x的值为:',x)

return fun2()

>>> fun1()

此时函数中x的值为: 5#局部变量的值未发生改变

25

lambda表达式

一个参数的定义

>>> def ds(x):

return 2*x+1

>>> ds(5)

11

>>> g = lambda x : 2 * x + 1

>>> type(g)

>>> g(5)

11

两个参数的定义,x,y,作为参数,冒号后面的为返回值

>>> def add(x,y):

return x+y

>>> add(3,4)

7

>>> f=lambda x,y : x + y

>>> f(3,4)

7

两个比较厉害的BIF

过滤器filter(function or None,iterable)

第一个参数定义为None,则表示从可迭代的序列中获取非False的值

>>> filter(None,[1,0,False,True])

>>> list(filter(None,[1,0,False,True]))

[1, True]

定义一个返回奇数的函数,从列表中过滤出其中的奇数的元素

>>> def odd(x):

return x%2

>>> temp=range(10)

>>> show=filter(odd,temp)

>>> list(show)

[1, 3, 5, 7, 9]

通过lambda表达式来实现以上的函数

>>> list(filter(lambda x:x%2,range(10)))

[1, 3, 5, 7, 9]

map(function,iterable)把可迭代序列的每个元素作为参数,通过function进行加工,都加工完毕后,返回新的序列。

>>> list(map(lambda x: x*2,range(10)))

[0, 2, 4, 6, 8, 10, 12, 14, 16, 18]

字典

它是两个元素之间的映射类型。

通过列表实现这种映射关系,但是明显不方便

字典由多个键和相对应的值所组成

>>> brand=['李宁','耐克','阿迪达斯']

>>> slogan=['一切皆有可能','Just do it','Impossible is noting']

>>> print('李宁的口号是:',slogan[brand.index('李宁')])

李宁的口号是:一切皆有可能

字典由多个键和相对应的值所组成,键值组合称为项

>>> dict1={'李宁':'一切皆有可能','耐克':'Just do it','阿迪达斯':'Impossible is noting'}

>>> print('李宁的口号是:',dict1['李宁'])

李宁的口号是:一切皆有可能

>>> dict2={1:'one',2:'two',3:'three'}

>>> dict2[2]

'two'

>>> dict3={}#创建一个空的字典

>>> dict3

{}

通过映射类型和关键字实现字典的创建

>>> dict3=dict((('F',70),('i',105),('s',115),('h',104),('C',67)))

>>> dict3

{'i': 105, 'C': 67, 's': 115, 'F': 70, 'h': 104}

>>> dict4=dict(李宁='一切皆有可能',耐克='Just do it')

>>> dict4

{'李宁': '一切皆有可能', '耐克': 'Just do it'}

对字典进行添加和修改的操作



>>> dict4['爱迪生']='天才就是99%的汗水+1%灵感,但这1%的灵感远远比99%的汗水更重要’

>>> dict4

{'李宁': '一切皆有可能', '耐克': 'Just do it', '爱迪生': '天才就是99%的汗水+1%灵感,但这1%的灵感远远比99%的汗水更重要'}

>>> dict4['李宁']='让一切成为不可能'

>>> dict4

{'李宁': '让一切成为不可能', '耐克': 'Just do it', '爱迪生': '天才就是99%的汗水+1%灵感,但这1%的灵感远远比99%的汗水更重要'}

字典的内置函数:

dict.fromkeys(S[,v])

>>> dict1={}

>>> dict1.fromkeys((1,2,3))

{1: None, 2: None, 3: None}

>>> dict1.fromkeys((1,2,3),('one','two','three'))   

{1: ('one', 'two', 'three'), 2: ('one', 'two', 'three'), 3: ('one', 'two', 'three')}#并不如想象的那样

>>> dict1.fromkeys((1,3),'数字')

{1: '数字', 3: '数字'}#是重新生成一个字典,而不是在原有基础上的修改

获取字典的键

>>> for eachKey in dict1.keys():

print(eachKey)

获取字典的值

>>> for eachValue in dict1.values():

print(eachValue)

获取字典的所有项

>>> for eachItem in dict1.items():

print(eachItem)

当试图访问字典中不存在的键时则会报错

当然可以通过get来设置一个返回值作为提示

也可以通过成员操作符进行判断

>>> dict1.get(30)

>>> print(dict1.get(30))

None

>>> dict1.get(30,'木有!')

'木有!'

>>> 30 in dict1

False

>>> 29 in dict1

True

清空字典可以用clear()方法

>>> dict1.clear()

>>> dict1

{}

拷贝copy(),显然a的地址和c的地址一样,而b的地址是不同于a的

>>> a={1:'one',2:'two',3:'three'}

>>> b=a.copy()

>>> c=a

>>> b

{1: 'one', 2: 'two', 3: 'three'}

>>> c

{1: 'one', 2: 'two', 3: 'three'}

>>> id(a)

49261384

>>> id(b)

3138584

>>> id(c)

49261384

pop()方法和popitem()方法,弹出的部分将从字典里面剔除

>>> b

{1: 'one', 2: 'two', 3: 'three'}

>>> b.pop(2)

'two'#弹出的是一个键以及其对应的值

>>> b.popitem()#随机弹出来一个项

(1, 'one')

setdefault()方法不用于get()方法的是当字典中不存在这个项时,它会在字典中随机的位置添加一个这样的项

>>> b

{3: 'three'}

>>> b.setdefaule('小白')

>>> b

{3: 'three', '小白': None}

>>> b.setdefault(5,'five')

'five'

>>> b

{3: 'three', '小白': None, 5: 'five'}

update()方法可以用来更新另一个字典

>>> a

{'小白': None}

>>> b={'小白':'狗'}

>>> a.update(b)

>>> a

{'小白': '狗'}

>>> a

{'小白': '狗'}

>>> b={'小灰':'狼'}

>>> a.update(b)

>>> a

{'小灰': '狼', '小白': '狗'}

你可能感兴趣的:(python学习笔记1)