Python学习笔记
一、列表
假设列表为list
1.列表操作
- list.append(elem) 尾插元素
- list.insert(i,elem) i号位置插入元素
- list.pop(i)弹出i号元素,并返回;没有i,默认弹出尾元素
- list.remove(elem)弹出指定元素;无返回
- del list[i] 删除元素
- list[i]=elem 修改元素
- list[i:j] 访问i到j号元素(不包含j)
- list.sort() 按字典序排序
- list.sort(reverse=True) 按字典反序排序
- sorted(list) 对列表临时排序(不改变原有顺序)
- len(list) 获取列表长度(元素个数)
- list.reverse() 使列表逆序
2.遍历列表
list=[‘AA’,‘111’,2,‘chen’]
for i in list:
print(i)
i表示循环变量,in 后面接要遍历的列表,也可写作:
list=[‘AA’,‘111’,2,‘chen’]
for i in range(len(a)):
print(list[i])
遍历部分列表:
list=[‘AA’,‘111’,2,‘chen’]
for i in range(i,j):#遍历i到j(不包含j位置)
print(list[i])
或
list=[‘AA’,‘111’,2,‘chen’]
for i in list[i:j]:
print(i) #切片
或
list=[‘AA’,‘111’,2,‘chen’]
for i in list[i:j:len]: #指定步长len
print(i) #切片
注意:python语法中严格缩进,否则会出错,正是用缩进来控制代码块,使得整洁有序,就好像C/C++中的"{}"。还要注意for后面的":",不能遗漏。
3.数字列表
num=list(range(i,j)) #创建i到j的连续数字列表(不包含j)
num=list(range(i,j,len)) #指定步长为len
min(num) #获取数字列表最小值
max(num) #获取数字列表最大值
sum(num) #获取数字列表的总和
4.复制列表
a=[‘111’,‘aaa’,‘AAA’,‘BBB’,‘CCC’,‘DDDD’]
b=a #全部复制(形式复制,并没有得到两个列表)
b=a[:]#使用切片才能得到两个不关联的列表
b=a[i:j:len] #复制从i到j,步长为len(跟切片一样)
5.元组
列表适合用于存储在程序运行中可能变化的数据集。列表是可修改的。Python将不能修改的值称为不可变的。而不可变的列表被称为元组。
元组使用圆括号"()“标识,而列表使用方括号”[]"来标识,除了元组的元素不可修改外,对元组的遍历等和列表类似。元组也可以使用切片。
虽然不可以修改元组元素,但可以对元组重新赋值,以新的值覆盖原来的值,如:
a=(100,200,300)
a=(300,200,100)
二、条件语句if
有列表a=[11,22,‘sss’,‘aaa’,‘bbb’]
for i in a:
if i==‘aaa’:
print(i.upper())
上述代码是遍历判断列表中是否有字符串’aaa’,有就输出其大写形式。注意缩进和冒号":"
判断语句i==‘aaa’,返回True或False
判断条件的写法:
- if A==B: #若A=B
- if A!=B: #若A!=B
- if A and B:#A,B条件同时满足,也可写作if A&B:
- if A or B:#A,B条件满足其一,也可写作 if A|B:
- if str in a: #检查列表a中是否包含字符串str
- if str not in a: #检查列表a中不包含字符串str
- if-elif-else语句:多重判断条件(else可以省略)
- if list:检查列表list是否为空
三、字典
1.定义
用大括号"{}",字典存储了相关的元素,一对相关元素之间用":"隔开,可以通过前面的元素索引后面的元素,前面的是键,后面的叫值,键-值一一对应。例如:
a={1:2,‘AAA’:‘BBB’}
a[1]=2
a[‘AAA’]=‘BBB’
2.相关操作
-
创建空字典:a={}
-
添加 键——值 对:a[elem_key]=elem_value
-
修改字典中的值:a[elem_key]=elem_value
可以发现这里添加和修改方式是一样的,同时也说明一个键只能对应一个值
-
删除 键——值 对:del a[elem_key]
3.遍历字典
- 遍历键——值对:
a={‘AAA’:‘BBB’,‘cc’:‘dd’}
for key,value in a.items():
print(“Key:”+key)
print(“Value:”+value)
注:遍历字典,键——值对的返回顺序也与存储顺序不同。Python不关心存储顺序,而只跟踪键和值之间的关联关系。 - 遍历字典中的所有键:
for k in a.keys():
print(k.title())
注:将a.keys()写成a也可以,系统默认遍历键.事实上,a.keys()会返回一个包含所有键的列表 - 遍历字典中所有值:
for v in a.values():
print(v)
for v in set(a.values()):#避免遍历重复项,用set函数 - 按顺序遍历字典中所有键(值的遍历同理):
a={‘AAA’:‘BBB’,‘cc’:‘dd’}
for k in sorted(a.keys()): #临时排序
print(k)
4.嵌套
- 1.将系列字典存储到列表中,如:
DA={‘A’:'B,‘C’:‘D’}
DB={‘E’:‘e’,‘F’:‘f’,‘G’:‘g’}
DC={‘X’:‘x’,‘Y’:‘y’}
list=[DA,DB,DC] - 2.将列表存储到字典中:
pizza={
‘curst’:‘thick’,
‘toppings’:[‘mushrooms’,‘extra cheese’]
} - 3.将字典存储到字典中:
. . . . . . ...... ......
四、用户输入和while循环
1.用户输入
- 字符串输入:message=input(“提示输入信息”) #获取输入的字符串
- 数值输入:
num=input()
num=int(num) #强制转换
或者:
num=int(input())
2.while循环
while 循环条件:
循环体
- 可以让用户选择何时退出:
message=""
while message!=退出标志字符串:
message=input()
执行操作 - 可以使用break退出循环
while True:
if 退出条件:
break - 使用continue结束本次循环
while 循环条件:
if 结束本次循环条件:
continue - while循环遍历列表:
list=[‘AAA’,‘BBB’,‘DDD’]
while list: #当列表不空
list.pop() - 删除列表中的特定值
list=[‘AAA’,‘BBB’,‘DDD’]
while ‘DDD’ in list:
print(‘DDD’)
list.remove(‘DDD’) - 使用用户输入来填充字典
a={}
flag=True
while flag:
key=input()
value=input()
a[key]=value
if 退出条件:
flag=False
五、函数
1.定义函数
- 简单定义
def function():
函数体
function() #调用函数
定义部分的括号和冒号都不能少 - 传递参数
def function(username):
print(username)
function(‘Chen’) - 位置实参
def function(a,b):
print(a,b)
function(‘aaa’,‘bbb’)
注:所谓位置实参就是调用时参数的顺序和定义函数的参数顺序一致 - 关键字实参
关键字实参是传递给函数的 名称——值 对。直接在实参中将名称和值关联起来了,因此给函数传递实参时不会混淆。
def function(a,b):
print(a,b)
function(a=‘AAA’,b=‘BBB’) - 给参数指定默认值
def function(a,b=‘dog’):
函数体
注:使用默认形参时,在函数调用时就可以不用指定该参数的值
2.函数返回值
- 返回简单值
def function(a,b):
s=a+b
return s - 让实参变成可选
有时候只需要一个参数,那么就可以让多余的参数指定其默认值为空串或空值,调用的时候就可以不传递多余的参数,然后在函数体里判断参数是否为空,进行不同的处理即可
- 返回字典
def function(a,b,c):
p={‘A’:a,‘B’:b,‘C’:c}
return p
3.传递列表
- 假设有一个存储人名的列表,要写一个函数问候列表中的每一个人
def greet(names):
for name in names:
print(‘Hello’+name)
names=[‘zhang’,‘Wang’,‘Li’,‘Zhao’]
greet(names) - 传递了列表以后,函数可以对列表进行修改,且这种修改时永久性的
- 禁止修改列表:有时候我们只要结果,而要保留原来的列表,此时就要禁止对传递的列表进行修改,这时可向函数传递一个副本而不是原件,如:
function(list_name[:]) #用切片的方式创建副本
4.传递任意数量的实参
-
Python允许函数从调用语句中收集任意数量的形参,如:
def makepizza(*toppings):
print(toppings)makepizza(‘pepperoni’)
makepizza(‘mushrooms’,‘green peppers’,‘cheese’)
调用结果:
(‘pepperoni’,)
(‘mushrooms’,‘green peppers’,‘cheese’)
Python将实参封装在一个元组里,即便只接收一个值也是如此 -
组合使用位置实参和任意数量实参
-
使用任意数量的关键字实参
有时候需要接收任意数量的实参,但预先不知道传递给函数的会是什么样的信息。在这种情况下,可将函数编写为能够接收任意数量的 键——值 对,调用语句提供了多少就接收多少。一个这样的实例就是创建用户简介:你知道你将接收有关用户的信息,但不确定会是什么样的信息。在下面的示例中,函数build_profile()接收名和姓,同时还接收任意数量的关键字实参
def build_profile(first,last,**user_info):
“”“创建一个字典,其中包含我们知道的有关用户的一切”""
profile={}
profile[‘first_name’]=first
profile[‘last_name’]=last
for key,value in user_info.items():
profile[key]=value
return profile
user_profile=build_profile(‘albert’,‘einstein’,
location=‘princeton’,
field=‘physics’)
print(user_profile)函数build_profile()的定义要求提供名和姓,同时允许用户根据需要提供任意数量的名称——值对。形参**user_info中的两个星号让Python创建一个名为user_info的空字典,并将收到的所有名称——值对都封装到这个字典中。在这个函数中,可以像访问其他字典那样访问user_info中的名称——值对。