代码编织梦想

目录

一、字典

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)

 


结语

点个👍吧,高强度搬运笔记,还有几万个字。。。。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/bmxch/article/details/131027021