python基本操作3(速通版)

news2024/12/23 5:27:31

目录

一、字典

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)

 


结语

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/606687.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【5.31 代随_43day】 最后一块石头的重量 II、目标和、一和零

最后一块石头的重量 II、目标和、一和零 最后一块石头的重量 II1.方法图解步骤![在这里插入图片描述](https://img-blog.csdnimg.cn/d2266317bc43491fb261f6372c2e0c9d.jpeg)代码 目标和1.方法图解步骤代码 一和零图解步骤代码 最后一块石头的重量 II 力扣连接:104…

状态机编程应用(收放卷停车方式控制)

有关状态机的详细介绍请参看下面的文章博客: PLC面向对象编程系列之有限状态机(FSM)详解_codesys 状态机_RXXW_Dor的博客-CSDN博客编写PLC控制机器动作类程序时,当分支比较少的时候我们使用if else语句解决,当分支比较多的时候,我们要使用CASE,END_CASE语句解决,针对分支…

微信小程序个人心得

首先从官方文档给的框架说起,微信小程序官方文档给出了app.js, app.json, app.wxss. 先从这三个文件说起. 复制 app.js 这个文件是整个小程序的入口文件,开发者的逻辑代码在这里面实现,同时在这个文件夹里面可以定义全局变量.app.json 这个文件可以对小程序进行全局配置,决定…

【6.01 代随_44day】 完全背包、零钱兑换 II、组合总和 Ⅳ

完全背包、零钱兑换 II、组合总和 Ⅳ 完全背包1.方法图解步骤 零钱兑换 II1.方法图解步骤代码 组合总和 Ⅳ图解步骤代码 完全背包 讲解连接&#xff1a;完全背包 1.方法 首先再回顾一下01背包的核心代码 for(int i 0; i < weight.size(); i) { // 遍历物品for(int j b…

javaScript蓝桥杯---分阵营,比高低

目录 一、介绍二、准备三、目标四、代码五、答案 一、介绍 期末考试结束不久&#xff0c;辛勤的园丁们就将所有学生的考试成绩汇总完毕。不过现在遇到一个问题&#xff0c;那就是目前所有学生的考试数据均混杂在一起。这些数据结构如下&#xff1a; [{name: "潇然"…

安装Pygame库:在Python中创建游戏的第一步

&#x1f331;博客主页&#xff1a;大寄一场. &#x1f618;博客制作不易欢迎各位&#x1f44d;点赞⭐收藏➕关注 目录 前言 安装Pygame库 方法一、在pycharm内部直接安装 方法二、通过pip直接安装 验证安装 前言 Pygame是一个功能强大的Python游戏开发库&#xff0c;它提…

MCU器件选型---主流厂商

MCU(Micro Controller Unit)中文名称为微控制单元&#xff0c;又称单片微型计算机(Single Chip Microcomputer)&#xff0c;是指随着大规模集成电路的出现及其发展&#xff0c;将计算机的CPU、RAM、ROM、定时数器和多种I/O接口集成在一片芯片上&#xff0c;形成芯片级的计算机&…

SSRF漏洞、SQL注入、CSRF漏洞、XXE漏洞

SSRF漏洞 1.我理解的定义&#xff1a; 攻击者将伪造的服务器请求发给一个用户&#xff0c;用户接受后&#xff0c;攻击者利用该安全漏洞获得该用户的相关信息 2.原理&#xff1a; 3.场景&#xff1a; &#xff08;1&#xff09;分享 &#xff08;2&#xff09;转码 &#xff…

网络编程知识点总结(4)

sock服务端代码实现读写 前几章有具体介绍这几个函数&#xff0c;这里就简单罗列出来了 &#xff08;1&#xff09;socket()函数 int socket(int domain, int type, int protocol); &#xff08;2&#xff09;bind()函数: IP号端口号与相应描述字赋值函数 int bind(int soc…

shell编程之for循环

文章目录 shell编程之for循环一.for语句1.什么是for循环2.for语句的结构3.for语句中常用转义字符 二.for语句应用示例1.批量添加用户2.根据IP地址检查主机状态三.循环的次数1.循环次数的格式2.循环次数示例2.1求1-100的整数求和2.2 1-10的偶数求和 3.步长——seq3.1 1-10的偶的…

JavaScript对象详解(六)

JavaScript对象详解 1、对象的使用1.1、使用对象字面量法1.2、使用构造函数1.3、使用 Object.create() 2、继承与原型链2.1、基于原型链的继承2.1.1、继承属性2.1.2、继承方法 2.2、不同方式所生成的原型链2.2.1、使用语法结构2.2.2、使用构造器2.2.3、使用Object.create()2.2.…

【锂离子电池容量估算】电池单元总容量的递归近似加权总最小二乘估计(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

论文笔记--Deep contextualized word representations

论文笔记--Deep contextualized word representations 1. 文章简介2. 文章概括3 文章重点技术3.1 BiLM(Bidirectional Language Model)3.2 ELMo3.3 将ELMo用于NLP监督任务 4. 文章亮点5. 原文传送门 1. 文章简介 标题&#xff1a;Deep contextualized word representations作者…

MMPose(openmmlab AI实战营二期第一节)

链接&#xff1a;人体关键点检测与MMPose_哔哩哔哩_bilibili 赶了个进度&#xff0c;实际上没听到&#xff0c;一个方向被浓缩成50分钟是有点难度。后续有需要再回顾吧 人体姿态估计&#xff1a;识别人体关键点坐标。模式识别任务&#xff0c;难点是始终在变化。以关键点连线…

chatgpt赋能python:如何使用Python匹配IP地址

如何使用Python匹配IP地址 如果你是一位网络管理员或是网络安全专家&#xff0c;那么你很可能需要经常处理IP地址。在一些情况下&#xff0c;你需要使用Python来自动化匹配或验证IP地址。在本文中&#xff0c;我们将介绍如何使用Python匹配IP地址。 IP地址的基础知识 在介绍…

地震segy数据高效读写库cigsegy在windows系统的编译

https://github.com/JintaoLee-Roger/cigsegy 一个读写 segy 格式地震数据的 python 和 c 工具。可以将 segy 格式文件读到内存或者直接转为二进制文件&#xff0c;也可以将一个 numpy 数据存储为segy格式的文件。 特点: 快&#xff0c;底层使用c实现可以在python中使用&…

皮卡丘XXE/URL重定向/SSRF

一.XXE 1.概述 XXE -"xml external entity injection" 既"xml外部实体注入漏洞"。 概括一下就是"攻击者通过向服务器注入指定的xml实体内容,从而让服务器按照指定的配置进行执行,导致问题" 也就是说服务端接收和解析了来自用户端的xml数据,而又…

chatgpt赋能python:Python升级所有包:一步引导所有Python开发者升级你的Python环境

Python升级所有包&#xff1a;一步引导所有Python开发者升级你的Python环境 Python作为一种动态的编程语言&#xff0c;一直在不断发展和更新。每个Python版本都有自己的新功能和改进。因此&#xff0c;许多Python开发者在使用Python时都会尝试升级到最新的版本。但是&#xf…

论文笔记--Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context

论文笔记--Transformer-XL: Attentive Language Models Beyond a Fixed-Length Context 1. 文章简介2. 文章概括3 文章重点技术3.1 Segment-Level Recurrence with State Reuse3.2 相对位置编码 4. 文章亮点5. 原文传送门 1. 文章简介 标题&#xff1a;Transformer-XL: Attent…

Spring集合

目录 SpringSpring简介Spring概述Spring FrameworkSpring Framework特征 IOC1、IOC的思想(1)传统方式的获取资源(2)控制反转方式的获取资源(3)DI 2、IOC 容器的两种实现BeanFactoryApplicationContext 基于XML管理bean1.创建Maven2.引入依赖3.创建HelloWorld.Java类4.创建sprin…