科技与灵魂的碰撞
Python 从入门到实践  笔记
Python 从入门到实践 笔记

Python 从入门到实践 笔记

一、列表[]

1.增加函数:
append() –> list.append()
extend() –> list.extend()
insert() –> list.insert()
2.删除函数
删除列表中的元素:del –> del list[]
移除列表最后的元素:pop() –> list.pop()
移除列表中某个值的第一匹配值:remove() –> list.remove()
3.列表排序
将元素反放:reverse() –> list.reverse()
将元素排序:sort() –> list.append(key=len,reverse=ture)以长度为参数,逆序排序
将元素排序,并返回新列表,不改变原来:sorted() –> list1.reverse(list)

二、元组()
将列表转化为元组:tuple() –> tuple([1,2,3])

第六章 字典和集合

6.1字典

6.1.1 什么字典?

字典是python中常用的一种数据储存结构,由”键-值“对组成,

其中:键可以是python中任意不可变数据,如:整数、实数、复数、字符串、元组

值可以是任意数据类型

6.1.2 怎么创建字典

①直接赋值

变量名={键1:值1,键2:值2}
stu={'num':'20010101','name':'xiaohua'}

②使用dict(),通过其他字典创建

stu=dict('num':'20010101','name':'xiaohua')
stu2=dict(stu1)    
stu3=dict(zip(['num','name'],['xiaohua'.'20180101'])
stu4=dict(name=201283',sex='male')

zip()函数:将可迭代的对象作为参数,将对象中对应的元素打包成一个个元组,然后返回由这些元组组成的zip对象

list_str=['a','b','c']
list_num=[1,2,3]
list=zip(list_str,list_num)

③使用fromkeys创建字典

但所有的键对应同一个值的时候,可使用fromkeys()创建字典

stu=dict.fromkeys(['wangwu','zhangsan']) #创建字典,"键"值默认为"none"     --> {'wangwu':none,'zhangsan':none}
stu2=dict.fromkeys(['wangwu','zhangsan','18'])     --> {'wangwu':18,'zhangsan':18}

6.1.3 字典的访问

①根据键值访问值

stu={'num':'20180105','name':'inbing','sex':'male'}
stu['num']        -->'20180105'

②使用get()方法访问值

stu={'num':'20180105','name':'inbing','sex':'male'}
stu.get('num')     -->'20180105'

6.2字典的基本操作

6.2.1 添加和修改元素

stu={'num':'20180105','name':'inbing','sex':'male'}
stu['age']='18'      #添加学生的年龄
stu['sex']='female'  #修改性别

6.2.2 删除元素

①del命令

stu={'num':'20180105','name':'inbing','sex':'male'}
del stu['sex']     #删除sex及其值

②clear() :清空字典

stu={'num':'20180105','name':'inbing','sex':'male'}
stu.clear()        ---> {}     #清空字典

③pop() :删除age键值,并返回值

stu={'num':'20180105','name':'inbing','sex':'male'}
stu.pop('sex')         ---->  'male'     #删除sex键值,并返回值

④popitem() :随机选取一个键值对,删除并返回键值

stu={'num':'20180105','name':'inbing','sex':'male'}
stu.popitem()      #随机选取一个键值对,删除并返回键值

6.2.3 更新字典

使用update()方法可以将新字典中的键值对一次性全部添加到当前字典中

stu={'num':'20180105','name':'inbing','sex':'male'}
stu.update({'age':'18','sex':'female'})       #修改sex,并添加age

6.2.4 复制字典

复制字典可调用copy()方法,copy()返回值点的浅复制,返回值为一个新字典

深复制:deepcopy(),完全复制父对象及其子对象

stu={'num':'20180105','name':'inbing','sex':'male'}
stu.copy()     --->  {'num':'20180105','name':'inbing','sex':'male'}     #返回值为一个新字典

6.3 字典的遍历

6.3.1 遍历字典中所有的“键-值”对

需要用到items()方法

stu={'marry':'C','jone':'java','lily':'python','tony':'c#'}
for name,cla in stu.items():
     print(name,'选修的是',cla)

6.3.2 遍历字典中所有的键

当不需要使用字典里的值时,可使用keys()方法只遍历字典中的键,该方法以列表返回一个字典中所有的键

stu={'marry':'C','jone':'java','lily':'python','tony':'c#'}
for name in stu.keys():
    print(name)

6.3.3 遍历字典中所有的值

当只关心字典中的值时,可以用values(),该方法以列表返回一个字典中所有的值

stu={'marry':'C','jone':'java','lily':'python','tony':'c#'}
for cla in stu.values():
    print(cla)

6.4 嵌套

将字典储存在列表里或者将列表作为值储存在字典里,则称为嵌套,可以在列表中嵌套字典、在字典中嵌套列表、字典中嵌套字典

6.4.1 列表中嵌套字典

stu1={'name':'zhangsan','age':'19'}    #定义字典stu1
stu1={'name':'xiaohong','age':'18'}    #定义字典stu2
list=[stu1,stu2]                       #创建包含两个字典的列表
for s in list:                         #遍历列表 
    print(s)

6.4.2 字典中嵌套列表

stu={'marry':['C','math'],'jone':['java','art'],'lily':['python','english'],'tony':['c#','chinese']}
for name,cla in stu.items():
     print(name,'选修的是',cla)
     for c in cla:
         print(c)

6.4.3 字典中嵌套字典

stu={
   'wangmi':{'sex':'f','age':'15'},
   'linmei':{'sex':'m','age':'18'}, 
   'xiaoming':{'sex':'f','age':'19'}
}
for name,inf in stu.items():
    print(name,'性别:',inf['sex'],'年龄:',inf['age'])

6.5 集合

集合,既包含0个或多个数据项的无序组合,元素不能重复,只能是固定的数值类型,如:整数、浮点、字符串、元组,不能是列表、字典、集合等可变数据类型

python库提供了一个hash()函数来计算对象的哈希值,能被计算出哈希值的都不能作为集合的元素,也不能作为字典对象的“键”

6.5.1 创建集合

a={1,2,3,4}
a       --->{1,2,3,4}
b={1,5,34,1,85,3,34}
b       --->{1,3,5,34,85}

由于集合元素是无序的,集合的打印效果和定义顺序可以是不一致的

可以使用set()函数将列表、元组等其他类型转换为集合

b=set('runboot')
b       ---> {'r','u',;'n','b','o','t'}

6.5.2 集合的基本操作

①添加元素

s.add(x)将元素 x 添加到集合 s 中,如果元素已存在,则不进行任何操作。

thisset = set(("Google", "Runoob", "Taobao"))
thisset.add("Facebook")
print(thisset)
>>>{'Taobao', 'Facebook', 'Google', 'Runoob'}
s.update( x )  可以添加元素,且参数可以是列表,元组,字典等
thisset = set(("Google", "Runoob", "Taobao"))
thisset.update({1,3})
print(thisset)
>>> {1, 3, 'Google', 'Taobao', 'Runoob'}
thisset.update([1,4],[5,6])  
print(thisset)
>>> {1, 3, 4, 5, 6, 'Google', 'Taobao', 'Runoob'}

②移除元素

s.remove( x )  将元素 x 从集合 s 中移除,如果元素不存在,则会发生错误。
thisset = set(("Google", "Runoob", "Taobao"))
thisset.remove("Taobao")
print(thisset)
>>> {'Google', 'Runoob'}
thisset.remove("Facebook")   # 不存在会发生错误
Traceback (most recent call last):
>>>   File "<stdin>", line 1, in <module>
KeyError: 'Facebook'
s.discard( x )   移除集合中的元素,且如果元素不存在,不会发生错误
thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook")  # 不存在不会发生错误
print(thisset)
>>> {'Taobao', 'Google', 'Runoob'}
s.pop()   也可以设置随机删除集合中的一个元素
thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
x = thisset.pop()

③计算集合元素个数

len(s)
thisset = set(("Google", "Runoob", "Taobao"))
len(thisset)
>>> 3

④清空集合

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

⑤判断元素是否在集合中存在

x in s
thisset = set(("Google", "Runoob", "Taobao"))
"Runoob" in thisset
>>> True
"Facebook" in thisset
>>> False

6.5.2 集合运算

s&t 交集,返回一个新集合,包括同时在集合s和t中的元素

s|t 并集,返回一个新集合,包括s和t里所有的元素

s-t 差集,返回一个新集合,包含集合s中但不在集合t中的元素

s^t 补集,返回一个新集合,包括集合s和t里的元素,但不包括同时在集合s和t里的元素


TEST

①创建一个学生选课字典,字典记录两名学生选课信息,学生姓名为键,选择的课程用列表表示,创建完成后输出每个学生姓名及选课信息

student_class_dict={'Wangming':['math','art'],'Luhong':['biology','geography','music'] }
print(student_class_dict)
for key,value in student_class_dict.items():
	print("学生姓名为:"+key+",选择的课程为:"+str(value))

②编写程序,实现删除列表重复元素的功能

arr=[]
length=int(input("请输入列表的长度:"))
i=0
while i<length:
    element=input("请输入第%d个元素"%(i+1))
    arr.append(element)
    i+=1
newlist=set(arr)
print(newlist)

③输入一段字符串,并统计每个字母出现的次数,按照{‘a’:3,’b’:8}的形式输出

arr = []
myStr = input("请输入只包含字母的字符串:")
newStr = myStr.lower()
for string in newStr:
    arr.append(string)
a = {}
for i in arr:
    if arr.count(i) >= 1:
         a[i] = arr.count(i)
print(a)

第七章 函数

7.1 函数的定义和使用

7.1.1 函数的定义

函数的一般形式为:

def 函数名([形式参数列表]):
     函数体

使用def关键字定义函数,函数名可以是任意有效的python标识符,函数名后的()里边放的是形参,形参是调用该函数是传递给他的值,可以是0个或者多个,以”,”分隔

  • 即使该函数不接受任何参数,也必须保留一对空的圆括弧
  • 括号后面的冒号不能省略

7.1.2 函数的调用

  • 定义一个函数:给了函数一个名称,指定了函数里包含的参数,和代码块结构。
  • 这个函数的基本结构完成以后,你可以通过另一个函数调用执行,也可以直接从 Python 命令提示符执行。
  • 如下实例调用了 printme() 函数:
# 定义函数 def printme( str ):
# 打印任何传入的字符串 print (str) return # 调用函数
printme("我要调用用户自定义函数!") 
printme("再次调用同一函数")

7.1.3 函数的返回值

函数并非总是直接输出数据,他可以处理数据,并返回一个或这一组值,称之为返回值,使用return进行返回

7.2 函数的参数

7.2.1 实参和形参

定义函数时,圆括号内的是形参,调用函数时向其传递实参

参数的类型可分为:固定数据类型(整数、浮点数、字符串、元组)、可变数据类型(列表、字典、集合),当参数类型为固定数据类型时,在函数内部直接修改形参的值。不会影响实参!

7.2.2 参数类型

在python中,有多种参数类型,包括位置参数、默认值参数、关键字参数、不定长参数

①必需(位置)参数

必需参数须以正确的顺序传入函数。调用时的数量必须和声明时的一样。

②关键字参数

关键字参数和函数调用关系紧密,函数调用使用关键字参数来确定传入的参数值。

使用关键字参数允许函数调用时参数的顺序与声明时不一致,因为 Python 解释器能够用参数名匹配参数值。

③默认参数

调用函数时,如果没有传递参数,则会使用默认参数。

④定长参数

你可能需要一个函数能处理比当初声明时更多的参数。这些参数叫做不定长参数


发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注