目录
一、字典
1.字典定义
2.字典的访问
3.字典的遍历
4.字典删除
5.字典练习
6.有序字典
7.集合
8.类型转化问题
9.公共方法
二、列表推导式
1.基本操作
2.在循环中使用if
三、组包和拆包
1.组包拆包基本应用
2.拆包的字典问题
四、python函数的一些特性
1.函数返回多个数据
2.函数的嵌套调用
3.递归调用
4.变量作用域
5.可变类型和不可变类型
6.函数参数问题
7.可变长参数
结语
一、字典
1.字典定义
#定义字典
d = {}
print(d)
print(type(d))
#key一般情况下使用字符串类型的数据充当,理论上不可变的类型都可以作为key
#只要是可hash的对象都可以作为key
d = {1:"one",2:"two"}
print(d)
d = {"one":"星期一","tow":"星期二"}
print(d)
2.字典的访问
d = {"one":"星期一","two":"星期二","three":"星期三","four":"星期4"}
print(d)
print(d['one'])
print(d['two'])
print(d['three'])
#赋值
d['four'] = '星期四'
print(d)
print("___________________________________________________________________________")
print(d['one'])
print(d.get('one'))
#下标方式在访问数据时,如果key不存在,就会报错
#get方法方式 访问数据时,如果key不存在,返回none
print(d['two'])
print(d.get('two'))
print(d.get("asd"))
3.字典的遍历
d = {"one":"星期一","two":"星期二","three":"星期三","four":"星期4"}
for k in d:
print(k)
print("____________________________________________________________________")
#方法1
for k in d:
print(f'for in : {k} ---> {d[k]}')
print("____________________________________________________________________")
#方法2
print(d.keys())
for k in d.keys():
print(f'keys : {k} ---> {d[k]}')
#方法三
print("____________________________________________________________________")
print(d.values())
for v in d.values():
print(f'values: {v} ')
#方法四 item里面每一个元素都是一个元组
print("____________________________________________________________________")
print(d.items())
for i in d.items():
print(f' items : {i[0]} ---> {i[1]}')
print("____________________________________________________________________")
#解包
for k,v in d.items():
print(f' items : {k} ---> {v}')
a,b,c,d,e = 1,2,3,4,5
print(a)
print(e)
#解包编写赋值方式
item = (1,2,3,4,5)
a,b,c,d,e = item
print(a)
print(e)
4.字典删除
d = {"one":"星期一","two":"星期二","three":"星期三","four":"星期4"}
#出栈
d.popitem()
print(d)
d.popitem()
print(d)
#pop后面接key可以指定删除的键值对
print("_______________________________________________________________")
d = {"one":"星期一","two":"星期二","three":"星期三","four":"星期4"}
d.pop('one')
print(d)
5.字典练习
def creat_card():
card = {}
card['name'] = input("请输入姓名: ")
card['age'] = input("请输入年龄: ")
card['address'] = input("请输入地址: ")
return card
def show_card(card):
for k in card:
print(f'{k} : {card.get(k)}')
c = creat_card()
show_card(c)
6.有序字典
构建有序字典
from collections import OrderedDict
my_dict = OrderedDict()
my_dict['one'] = 1
my_dict['two'] = 2
my_dict['three'] = 3
my_dict['four'] = 4
my_dict['five'] = 5
print(my_dict)
7.集合
主要的作用是去重
#集合定义
s = {}
print(type(s))
s = {1,2,2,3,234,4,5,6666,5,5,5}
print(s)
注意集合是不支持下标的
遍历用for in
#集合定义
s = {}
print(type(s))
s = {1,2,2,3,234,4,5,6666,5,5,5}
print(s)
for i in s:
print(i)
8.类型转化问题
s = "hello"
#字符串转化成列表
l = list(s)
print(l)
print(type(l))
print("_______________________________________________________________")
#集合是无序的
l = set(l)
print(l)
print(type(l))
#列表转化集合
print("_______________________________________________________________")
l = list(s)
l1 = set(l)
print(type(l1))
print(l1)
#列表和集合转化成字符串
print("_______________________________________________________________")
l = list(s)
s1 = str(l)
print(type(s1))
print(s1)
l = set(s)
s1 = str(l)
print(type(s1))
print(s1)
但是这里转化成str类型并不是拼接
9.公共方法
s = "hello" + "itcast"
print(s)
s = [1,2,3,4] + [1,23,4,5]
print(s)
s = ('a','b') + ('c','b')
print(s)
s = "h1" * 4
print(s)
python内置函数
list1 = [1,23,23,4,111,23,111,4,5]
print(max(list1))
print(min(list1))
二、列表推导式
1.基本操作
创建一个具有一百个数字的列表
#for in
c_1 = []
for i in range(100):
c_1.append(i)
print(len(c_1))
print(c_1)
print("_________________________________________________________________________")
#推导式
c_1 = [i for i in range(100)] #注意,表达的变量使用要和循环中的变量一致
print(len(c_1))
print(c_1)
2.在循环中使用if
a = [x for x in range(3,10) if x%2==0]
print(a)
print("______________________________________________________________")
a = [x for x in range(3,10) if x%2!=0]
print(a)
print("______________________________________________________________")
a = [x for x in range(3,10)]
print(a)
3.多个for
#两个for
a = [(x,y) for x in range(1,3) for y in range(3)]
print(a)
print("_____________________________________________________________________________")
#多个for
a = [(x,y,z) for x in range(1,3) for y in range(3) for z in range(5,10) if z%2!=0]
print(a)
三、组包和拆包
1.组包拆包基本应用
#组包
a = 1,2,3,4,5
print(a)
print(type(a))
#拆包
a,b = 1,2
print(a,b)
print("_________________________________________________")
#注意拆包时,容器中的元素个数要和变量个数相同
a = 1,2,3,4,5
a1,a2,a3,a4,a5 = a
print(a1,'--',a2,'--',a3,'--',a4,'--',a5)
2.拆包的字典问题
a = {'a':1,'b':2,'c':3,'d':4,'e':5}
a1,a2,a3,a4,a5 = a
print(a1,'--',a2,'--',a3,'--',a4,'--',a5)
四、python函数的一些特性
1.函数返回多个数据
求一个列表数据中的最大值和最小值
def get_max_min():
cl = [1,0,3,4,5,2,3,1,55,43]
cl.sort()
max = cl[len(cl) -1]
min = cl[0]
return max,min
print(get_max_min())
ret = get_max_min()
print(ret)
print(type(ret))
2.函数的嵌套调用
def func_a():
print('func A start')
func_b()
print('func_a stop')
def func_b():
print('func b start')
func_c()
print('func_b stop')
def func_c():
print('func c start')
print('func_c stop')
func_a()
3.递归调用
避免死循环的问题
def factorial(n):
if n == 1:
return 1
return n * factorial(n-1)
n = factorial(5)
print(n)
print("----------------------------------------")
n = factorial(2)
print(n)
print("----------------------------------------")
n = factorial(10)
print(n)
4.变量作用域
#全局变量
num = 100
def func_a():
print(num)
def func_b():
#局部变量
num = 11
print(num)
func_a()
func_b()
全局变量先进入堆空间,所以函数引用的并不一定为初始值
#全局变量
num = 100
def func_a():
print(num)
def func_b():
#局部变量
num = 11
print(num)
num = 12
def func_c():
print(num)
func_a()
func_b()
func_c()
函数内部想要修改全局变量,需要加上global
全局变量
num = 100
def func_a():
print(num)
def func_b():
#global
global num
num = 11
print(num)
num = 12
def func_c():
print(num)
func_a()
func_b()
func_c()
5.可变类型和不可变类型
因为list是可变类型,所以内部函数引用不用提前声明
#全局变量
num = 100
c_list = []
def func_a():
print(num)
print(c_list)
def func_b():
#global
global num
num = 11
c_list.append(100)
print(num)
num = 12
def func_c():
print(num)
print(c_list)
func_a()
func_b()
func_c()
6.函数参数问题
函数中有初始值的参数不能定义在无初始值参数之前
func_a(a,b=0,c):
print(a,b,c)
func_a(1,2)
传参是可以无序的
def show(n,s):
print(n,s)
show(1,'hello')
show('hello',1)
传参要注意如果后面引用的类型需要是可迭代类型的就会报错
def show(n,s):
for c in s:
print(f'{n} --- {c}')
show(1,"hello")
#这里会报错,因为s要为可迭代的类型后面for in才可以使用
show("hello",1)
赋值时最好标参数名=值
def show(n,s):
for c in s:
print(f'{n} --- {c}')
show(s="hello",n=1)
7.可变长参数
相当于一个是列表,一个是字典
def my_f(*args):
print("_____________________")
print(args)
s = 0
for i in args:
s += i
print(s)
my_f(1,2)
my_f(1,23,4,2)
my_f(23,432,211,2,3,4)
混合参数
必须要有位置定义
可变参数二次传递
#元组只是一个对象,虽然闭包了,但是还是会出问题
def show(a,*args,**kwargs):
print(a)
print(args)
display(args)
def display(a,b,c,d,e):
print("dis: ",a,b,c,d,e)
show(1,23,4,123,432,1)
我们需要把元组对象分解
#元组只是一个对象,虽然闭包了,但是还是会出问题
def show(a,*args,**kwargs):
print(a)
print(args)
#我们需要解包
display(*args)
def display(a,b,c,d,e):
print("dis: ",a,b,c,d,e)
show(1,23,4,123,432,1)
结语
点个👍吧,高强度搬运笔记,还有几万个字。。。。