python_04

37、列表推导式

python 复制代码
# 作用:快速生成列表
# 列表变量名 = [x for x in range(开始值,结束值,步长) if 条件]
# 注意:左闭右开
list1 = [i for i in range(0,100)]
print(list1)
# list1 = [i for i in range(0,100)]
# print(list1)

list1 = [i for i in range(5,20,2)]
print(list1)

list1 = [i for i in range(20,5,-2)]
print(list1)

list1 = [i for i in range(6,-10,-2)]
print(list1)

# 还可以添加if条件,满足条件才生成列表
list1 = [i for i in range(0,100) if i % 2 == 0]  # 生成0 到 100 之间的 偶数,但不包括 100
print(list1)

list2 = [i for i in range(1,10,) if i % 2 != 0]
print(list2)

# 练习:[0,10,20,30,40,50,60,70,80,90,100]
# 方法一
list3 = [i for i in range(0,101,10)]
print(list3)

# 方法二:
list3 = [i for i in range(0,101) if i % 10 == 0]
print(list3)

38、元组

python 复制代码
# 1.元组和列表一样,都可用于存储数据
# 2.通过元组可以存放数据,不能被修改
# 元组类型单词 tuple
tuple1 = ("刘备","张飞","关羽","赵云")
print(tuple1)
print(type(tuple1))

# 元组数据如果只有一个,务必在后面添加逗号,否则被认为是字符串类型
tuple1 = ("刘备",)
print(tuple1)
print(type(tuple1))

tuple1 = ("赵云","刘备","张飞","关羽","赵云","赵云")
print(tuple1[2])

# 计算个数某个元素的个数     count() 括号里只允许有一个参数,不能设置第二个参数
print(tuple1.count("赵云"))

# 获取索引值 index() 可以有第二个参数,代表从这个参数起开始查找
#print(tuple1.index("张飞"))
print(tuple1.index("赵云",1))

# 长度
print("元组长度")
print(len(tuple1))
print("---")

# 元组不允许修改

# 无法使用sort进行排序,所以提供了最大、最小值语法
tuple2 = (1,9,3,7,66,33)
print(max(tuple2))
print(min(tuple2))
print("---")
# 元组数据也可以进行遍历
for i in tuple2:
    print(i)

39、字典

python 复制代码
# 字典不仅可以保存不同类型的数据,可以把不同类型数据在保存时加以

# 1.基本结构: 字典名 = {}
# 2.大括号内结构为: 键名:键值  (俗称键值对儿)  键名一般为英文
#                 键值:实值
# 3.多个键值对之间使用逗号隔开

# 键名一般不用中文
ren = {"name":"张三","age":18,"height":180,"gender":"man"}
print(ren)
print(type(ren))      # 字典类型的单词:dict

# .print回车,可以快速把想输出的内容放在print的小括号中
print(ren["age"]) # 查询值 ["键名"] 可以获取键名对应的键值

ren["salary"] = 20000 # 新增了一个键值对数据 如果没有这个键,相当于新增了一个键值对
print(ren)

ren["salary"] = 30000 # 如果没有这个键,相当于新增了一个键值对,如果有这个键,相当于修改
print(ren)

ren.pop("height") # pop("键名") 删除键和对应的值 必须设置参数 参数必须为键名
print(ren)

# del ren["name"]  # 删除功能,不推荐使用
# print(ren)

# ren.clear() # 清空字典
# print(ren)
print("---------")

ren = {"name":"张三","age":18,"height":180,"gender":"man"}
print(ren.keys())   # 获取所有键名
print(ren.values()) # 获取所有键值
print(ren.items())  # 获取所有的键名和键值 把所有的键名和键值放在 元组 里面

print("---------")

# 字典的循环遍历
for key in ren.keys():    # 遍历键名
    print(key)
print("==========")
for val in ren.values():  # 遍历键值
    print(val)

print("---------")
# 练习:找到值为9 的键名
dict1 = {"a":23,"b":2,"c":9,"d":13}
for i in dict1:     # 直接遍历字典变量,就相当于.keys()
    # print(i)
    if dict1[i] == 9:
        print(i)

40、拆包

python 复制代码
# 快速把列表或元组中的数据保存到变量中

# 拆列表
list1 = ["刘备","关羽","张飞"]
a,b,c = list1
print(a)
print(b)
print(c)

# 拆元组
# 拆包时,等号左右一定要相等才可以
tuple1 = ("刘备","关羽","张飞")
a,b,c = tuple1
print(a)
print(b)
print(c)

# 拆字典
dict1 = {"name":"张三","age":18,"height":180}

print(dict1.items())
for key,val in dict1.items(): # items()是元组数据,相当于进行元组拆包
    print(f"key是{key}",end="")
    print("  ",end="")
    print(f"val是{val}")

41、函数

python 复制代码
# 函数的作用,在开发程序时,使用函数可以提高编写的效率以及代码的重用
def hello():
    # 函数体 具体函数的实现内容
    # pass 占位,不让pycharm报错
    print("hello 1")
    print("hello 2")
    print("hello 3")

# 想要函数体中的代码执行,就需要调用函数
hello()

# --------------------------------------------------------

# 加法计算
# def sum():
#     a = 1
#     b = 2
#     print(a+b)
# sum()
def sum():
    a = 1
    b = 2
    print(a+b)
sum()

# 打印20个星号
# def start():
#     print("*" * 20)
# start()
def start():
    print("*" * 20)
start()

# # 函数传参
# def PName(userName):
#     print("hello"+userName)
# PName("小明")
def PName(username):
    print("hello" + username)
PName("小李")

# # 函数传参
# def sum(a,b):       # a和b就是形参(形式上的参数,不实际参与运算)
#     print(a + b)
# sum(2,2)            # 调用时候的小括号中写的叫实参(实际参与运算的)
# sum(20,10)
def sum(a,b):
    print(a + b)
sum(2,3)

# # 练习:
# def sayHi(name):
#     print(f"{name} 你好")
# sayHi("刘备")
# sayHi("张飞")
def sayHi(name):
    print(f"{name}    ---你好")
sayHi("张三")

# 练习2:自己传参打印20个*
# def xing(num):
#     print("*" * num)
# xing(8)
def xing(num):
    print("*" * num)
xing(8)

42、函数返回值

python 复制代码
# def sum(a,b):
#     return a + b
# print(sum(2,5))
def sum(a,b):
    return a + b
print(sum(2,5))

# 练习1:
# 定义一个函数,接受2个参数,实现乘法操作,返回结果
# def mian(height,width):
#     return height * width
# res = mian(5,8)
# print(res)
def mian(height,width):
    return height * width
res = mian(5,9)
print(res)


# 练习2:定义一个函数,接收3个参数,实现相加,返回结果
def buy(a,b,c):
    return a + b + c
    #print("lalalala")  # return 之后的代码,肯定不会执行

lis = buy(10,20,30)
print(lis)

43、函数的嵌套

python 复制代码
def fun1():
    print("这是fn1")

def fun2():
    print("这是fn2")
    fun1()


fun2()

44、全局和局部变量

python 复制代码
def fn1():
    a = 2   # 函数体中定义的变量是 局部变量 只能在函数体内使用,外面无法使用
    print(a)
fn1()


# 局部变量在自己函数体内可以使用,函数体外不能使用
# 全局变量:所有人都可以用,但是如果自己有,就优先使用自己的,如果自己没有,再使用全局的。全局变量一旦被修改,后续获取的全局变量值就是被修改之后的
chair = "公共的座椅"  # 没有写在任何函数体里的变量,就算全局变量

def my_home():
    chair = "我自己家的沙发"
    chair = "我自己沙发坏了"
    print(chair)
my_home()   # 调用函数的时候打印chair,会就近原则打印自己家的沙发文字

def wang_home():
    print(chair)
chair="有人把公共的座椅弄坏了"

wang_home()     # 调用的时候,wang家没有chair,只能使用全局的chair

45、局部转全局

python 复制代码
num1 = 10

def fn1():
    global num1 # 后面再出现num1,就代表全局变量的num1(局部变量 转 全局变量)
    num1 = 2    # 让全局变量num1的值变成2
fn1()
print(num1)

# 练习
name = "张三"
def  fn1():
    global name      # global 把局部变量 装换为 全局变量
    name = "李四"     # 此时改变的是全局变量的值,如果去掉 上一行的global 则是局部变量
fn1()
print(name)

46、形参和全局变量

python 复制代码
def fn1(a):
    # 形参属于局部变量
    a += 1
    print(a)

a = 10
fn1(a)
print(a)    # 全局的10


def fn1(a):    # 参数传递列表也是可以的
    a.insert(4,666)
a = [1,2,3,4]
fn1(a)
print(a)

47、函数的缺省值

python 复制代码
def fn1(a,b=2): # 缺省值:如果调用的时候传了这个缺省值,那么就用你传的值,如果没传,就有这个缺省值(默认值)
    print(a)
    print(b)
fn1(1)
fn1(1,10)

list1 = [6,42,19,66]
# list1.sort(reverse=False)
list1.sort(reverse=True)
print(list1)

def fn1(a,b=2):   # 缺省值:如果调用的时候传了这个缺省值,那么就用你传的值,如果没传,就有这个缺省值
    print(a)
    print(b)
# fn1(1)
fn1(1,10)


def fn1(a=1,b=2):   # 缺省值:如果调用的时候传了这个缺省值,那么就用你传的值,如果没传,就有这个缺省值
    print(a)
    print(b)
fn1(66,77)   # 串了就用传的值
fn1()  # 没传就用缺省值
fn1(66)   # 两个缺省值,传一个实参,代表第一个缺省值失效


def fn1(a=1,b):    # 不能把有缺省值的形参写在没有缺省值的形参前面
    print(a,b)


def fn1(a,b=2,c=3):
    print(a,b,c)

# fn1(1)    # 1 2 3
# fn1(10,20)  # 10 20 3
fn1(10,c=66)   # 10 2 66  如果想传递实参的时候,指定参数名,那么就是给这个参数去设置的值

def fn1(a,b=2,c=3):
    print(a,b,c)
fn1(1)
fn1(10,c=99)

48、了解多值传参

python 复制代码
def fn1(num1,*args,**kwargs):
    print(num1)
    print(args)
    print(kwargs)
fn1(2,3,4,5,6,7,name="张三",age=18,height=180)


def fn2(num1,*args,**kwargs):
    print(num1)
    print(args)
    print(kwargs)
fn2(8,2,2,2,2,2,2,2,name="李四",age=19,height=200)

49、拉姆拉表达式

python 复制代码
sum = lambda a,b: a + b     # 匿名函数:适用于临时一次使用,写法简单
# :后面就是要return的内容
print(sum(1,2))

# fun1(a,b):
#     return a + b

sum = lambda a,b: a + b
print(sum(6,2))



sum = lambda a,b: a + b
print(sum(7,10))
相关推荐
drebander10 分钟前
使用 Java Stream 优雅实现List 转化为Map<key,Map<key,value>>
java·python·list
威威猫的栗子33 分钟前
Python Turtle召唤童年:喜羊羊与灰太狼之懒羊羊绘画
开发语言·python
墨染风华不染尘1 小时前
python之开发笔记
开发语言·笔记·python
Dxy12393102161 小时前
python bmp图片转jpg
python
麦麦大数据1 小时前
Python棉花病虫害图谱系统CNN识别+AI问答知识neo4j vue+flask深度学习神经网络可视化
人工智能·python·深度学习
LKID体1 小时前
Python操作neo4j库py2neo使用之创建和查询(二)
数据库·python·neo4j
LKID体2 小时前
Python操作neo4j库py2neo使用之py2neo 删除及事务相关操作(三)
开发语言·python·neo4j
小屁孩大帅-杨一凡2 小时前
Python-flet实现个人视频播放器
开发语言·python·音视频
算家云2 小时前
快速识别模型:simple_ocr,部署教程
开发语言·人工智能·python·ocr·数字识别·检测模型·英文符号识别
Thomas_Cai2 小时前
Python后端flask框架接收zip压缩包方法
开发语言·python·flask