python基本语法知识(二)

news2024/11/6 15:30:02

杂项

  • 如果一个制表符/t不能对齐,可以多加几个;

  • 只有将字典转换为字符串的时候才会保留字典的value,转成集合、列表、元组、都会丢失value

函数

例子1:

str1 = "hello world"
# 函数定义
def my_len(data):
    count = 0
    for i in data:
        count += 1
    print(f"字符串{data}长度为{count}")

my_len(str1) #!!!

输出:
字符串hello world长度为11

例子2:没有指定返回值,返回的就是None

def multi(x, y):
    result = x * y
    print(f"{x} + {y} 的计算结果:{result}" )

res1 = multi(3, 2)

输出:

3 + 2 的计算结果:6

None

None等同与False

例子3:给函数添加注释

使用多行注释

def multi(x, y):
    """
    :param x:
    :param y:
    :return: x * y的结果
    """
    result = x * y
    print(f"{x} + {y} 的计算结果:{result}")
    return result

例子4:全局变量和局部变量

num = 200

def test_b():
    global  num # 加上global 表明和外面全局的num是同一个数字
    num = 500
    print(f"test_b:{num}")

test_b() # test_b:500
print(num) # 500

列表

列表索引可以为负数,-1代表最后一个元素

例子1:索引为负

name_list = ['nokia', True, 22]
print(name_list[-1])
print(name_list[-2])
print(name_list[-3])
print(type(name_list))

输出:

22

True

nokia

<class ‘list’>

放在class里面的函数,我们称为方法

例子2:extend函数批量追加元素

mylist1 = ["apple", "banana", "python"]
mylist2 = [2, 3, 4]
mylist1.extend(mylist2)
print(mylist1) # ['apple', 'banana', 'python', 2, 3, 4]

常用列表方法

image-20230608212450899

元组

要点

  • 可以存储多个、不同类型的元素但是不能被修改,用()定义;
  • 如果元组里嵌套了list,则可修改这个list;
  • 元组可以嵌套使用;

例子1

t1 = (1, "hello", False)
t2 = ()
t3 = tuple()
t4 = ("good") # 只有一个元素会被识别为str类型,要加一个,才会是元组类型
t5 = ("bad", )
print(f"t1类型为{type(t1)}, 内容为{t1}")
print(f"t1类型为{type(t2)}, 内容为{t2}")
print(f"t1类型为{type(t3)}, 内容为{t3}")
print(f"t1类型为{type(t4)}, 内容为{t4}")
print(f"t1类型为{type(t5)}, 内容为{t5}")

输出

t1类型为<class ‘tuple’>, 内容为(1, ‘hello’, False)

t1类型为<class ‘tuple’>, 内容为()

t1类型为<class ‘tuple’>, 内容为()

t1类型为<class ‘str’>, 内容为good

t1类型为<class ‘tuple’>, 内容为(‘bad’,)

例子2:元组的方法

t1 = ("good", "bad", "well", "best", "worse", "good")
index = t1.index("best") # 查找"best"在t1中的索引
print(f"best 在t1中的索引为{index}")

num = t1.count("good") # 查找good在t1中出现次数
print(f"good 在t1中出现次数{num}")

len_t1 = len(t1)
print(f"t1中元素个数:{len_t1}")
# 元素遍历
index = 0
while index < len_t1:
    print(f"t1[{index}] = {t1[index]}")
    index += 1

输出:

best 在t1中的索引为3

good 在t1中出现次数2

t1中元素个数:6

t1[0] = good

t1[1] = bad

t1[2] = well

t1[3] = best

t1[4] = worse

t1[5] = good

例子3:元组中嵌套list可修改

t2 = (1, 2, ["hello", "world"])
print(f"t2内容为{t2}")
t2[2][0] = "apple"
t2[2][1] = "pear"
print(f"t2内容为{t2}")

输出

t2内容为(1, 2, [‘hello’, ‘world’])

t2内容为(1, 2, [‘apple’, ‘pear’])

字符串

例子1:字符串替换 replace

注意替换并不会修改原来字符串的值,而是返回一个新的替换后的字符串

my_str = "Royal never giveup"

new_mystr = my_str.replace("never", "forever")
print(f"将字符串{my_str}替换后得到{new_mystr}") #将字符串Royal never giveup替换后得到Royal forever giveup

例子2:切分字符串 split,同样不会修改原字符串

my_str = "Royal never giveup"
# 将my_str 按照空格切分,得到列表
my_str_list = my_str.split(" ")
print(f"将字符串{my_str}进行切分后得到:{my_str_list}, 类型是: {type(my_str_list)}")
# 将字符串Royal never giveup进行切分后得到:['Royal', 'never', 'giveup'], 类型是: <class 'list'>

例子3:去除前后指定字符 strip

my_str = "  Royal never giveup  "
# 不传入参数,则去除前后空格
new_my_str = my_str.strip()
print(f"字符串:{my_str}调用strip后,结果为:{new_my_str}")

my_str = "23Royal never giveup32"
# 去除my_str 前后的"2" 和 "3"
new_my_str = my_str.strip("23")
print(f"字符串:{my_str}调用strip后,结果为:{new_my_str}")

输出

字符串: Royal never giveup 调用strip后,结果为:Royal never giveup

字符串:23Royal never giveup32调用strip后,结果为:Royal never giveup

切片

例子1

# 切片操作
my_list = [1, 2, 3, 4, 5, 6]
result = my_list[1:4]
print(result) # [2, 3, 4]

# 对tuple切片
my_tuple = (2, 3, 4, 5, 6)
result2 = my_tuple[:]
print(result2) # (2, 3, 4, 5, 6)

集合

集合set使用 {} 进行定义,并且不允许存储重复元素

例子1

my_set = {"你好", "我好", "大家好", "我好", "大家好", "我好"}
my_set_empty = set() # 定义空集合
print(f"my_set的内容是:{my_set}, 类型是{type(my_set)}")
print(f"my_set_empty:{my_set_empty}, 类型是{type(my_set_empty)}")

my_set.add("python")
my_set.add("你好")
print(f"my_set添加元素后的结果是:{my_set}")

my_set.remove("大家好")
print(f"my_set移除元素后的结果是:{my_set}")

my_set = {"你好", "我好", "大家好"}
element = my_set.pop() # 随机取出一个元素,注意是随机取
print(f"集合被取出的元素是:{element}, 取出元素后:{my_set}")

输出

my_set的内容是:{‘大家好’, ‘我好’, ‘你好’}, 类型是<class ‘set’>

my_set_empty:set(), 类型是<class ‘set’>

my_set添加元素后的结果是:{‘大家好’, ‘我好’, ‘python’, ‘你好’}

my_set移除元素后的结果是:{‘我好’, ‘python’, ‘你好’}

集合被取出的元素是:大家好, 取出元素后:{‘我好’, ‘你好’}

例子2: 取差集 difference

set1 = {1, 2, 3}
set2 = {1, 5, 6}
# 取set1里有而set2里没有的元素
set3 = set1.difference(set2)
print(f"取出差集后的结果是:{set3}")
print(f"取出差集后,原有set1内容:{set1}")
print(f"取出差集后,原有set2内容:{set2}")

输出:

取出差集后的结果是:{2, 3}

取出差集后,原有set1内容:{1, 2, 3}

取出差集后,原有set2内容:{1, 5, 6}

例子3:消除相同元素

set1 = {1, 2, 3}
set2 = {1, 5, 6}
# 消除 set1 中 与 set2中相交的元素
set1.difference_update(set2)
print(f"消除差集后,set1:{set1}")
print(f"消除差集后,set2:{set2}")

输出

消除差集后,set1:{2, 3}

消除差集后,set2:{1, 5, 6}

例子4:合并集合union

union会去重

set1 = {1, 2, 3}
set2 = {1, 5, 6}

# 两集合合并
set3 = set1.union(set2)
print(f"合并集后,set3:{set3}")
print(f"合并集后,set1:{set1}")
print(f"合并集后,set2:{set2}")

输出

合并集后,set3:{1, 2, 3, 5, 6}

合并集后,set1:{1, 2, 3}

合并集后,set2:{1, 5, 6}

字典

例子1:基本使用

my_dict1 = {"周杰伦" : 87, "林俊杰" : 99, "陈奕迅" : 88}
# 定义空字典
my_dict2 = {}
my_dict3 = dict()
print(f"字典1的内容是:{my_dict1}, 类型是:{type(my_dict1)}")
print(f"字典2的内容是:{my_dict2}, 类型是:{type(my_dict2)}")
print(f"字典3的内容是:{my_dict3}, 类型是:{type(my_dict3)}")

# 定义重复key的字典,字典的key不允许重复
my_dict1 = {"周杰伦" : 87, "周杰伦" : 99, "陈奕迅" : 88}
print(f"重复key的字典内容是:{my_dict1}")

输出:

字典1的内容是:{‘周杰伦’: 87, ‘林俊杰’: 99, ‘陈奕迅’: 88}, 类型是:<class ‘dict’>

字典2的内容是:{}, 类型是:<class ‘dict’>

字典3的内容是:{}, 类型是:<class ‘dict’>

重复key的字典内容是:{‘周杰伦’: 99, ‘陈奕迅’: 88}

例子2:定义嵌套字典

stu_score_dict = {
    "周杰伦":{
        "语文":88,
        "数学":99,
        "英语":92
    },
    "林俊杰":{
        "语文":99,
        "数学":87,
        "英语":93
    },
    "陈奕迅":{
        "语文":84,
        "数学":99,
        "英语":99
    }
}

score = stu_score_dict["周杰伦"]["英语"]
print(f"周杰伦的英语成绩为:{score}")

score = stu_score_dict["陈奕迅"]["数学"]
print(f"陈奕迅的数学成绩为:{score}")

输出:

周杰伦的英语成绩为:92

陈奕迅的数学成绩为:99

例子3:字典常用操作

my_dict1 = {"周杰伦" : 87, "林俊杰" : 99, "陈奕迅" : 88}
score = my_dict1.pop("周杰伦") # 删除 key 为周杰伦的 pair
print(f"字典中被移除了一个元素,结果为:{my_dict1}, 周杰伦的考试分数是:{score}")

# 获取字典中全部的key
my_dict1 = {"周杰伦" : 87, "林俊杰" : 99, "陈奕迅" : 88}
keys = my_dict1.keys()
print(f"字典的全部keys是{keys}")

# 对字典遍历
print("--------------")
for key in keys:
    print(f"字典的key是:{key}")
    print(f"字典的value是:{my_dict1[key]}")

输出:

字典中被移除了一个元素,结果为:{‘林俊杰’: 99, ‘陈奕迅’: 88}, 周杰伦的考试分数是:87

字典的全部keys是dict_keys([‘周杰伦’, ‘林俊杰’, ‘陈奕迅’])

--------------

字典的key是:周杰伦

字典的value是:87

字典的key是:林俊杰

字典的value是:99

字典的key是:陈奕迅

字典的value是:88

例子4:各种容器的排序

my_list = [1, 2, 9, 4, 5]
my_tuple = (1, 8, 2, 7, 2)
my_str = "abcdefs"
my_set = {1, 4, 2, 8, 22}
my_dict = {"key1": 1, "key2": 2, "key3": 3, "key4": 4, "key5": 5}

print(f"列表对象排序的结果:{sorted(my_list)}")
print(f"元组对象排序的结果:{sorted(my_tuple)}")
print(f"字符串对象排序的结果:{sorted(my_str)}")
print(f"集合对象排序的结果:{sorted(my_set)}")
print(f"字典对象排序的结果:{sorted(my_dict)}")

print("----------------")
print(f"列表对象反向排序的结果:{sorted(my_list,reverse=True)}")
print(f"元组对象反向排序的结果:{sorted(my_tuple,reverse=True)}")
print(f"字符串对象反向排序的结果:{sorted(my_str,reverse=True)}")
print(f"集合对象反向排序的结果:{sorted(my_set,reverse=True)}")
print(f"字典对象反向排序的结果:{sorted(my_dict,reverse=True)}")

输出:

列表对象排序的结果:[1, 2, 4, 5, 9]

元组对象排序的结果:[1, 2, 2, 7, 8]

字符串对象排序的结果:[‘a’, ‘b’, ‘c’, ‘d’, ‘e’, ‘f’, ‘s’]

集合对象排序的结果:[1, 2, 4, 8, 22]

字典对象排序的结果:[‘key1’, ‘key2’, ‘key3’, ‘key4’, ‘key5’]

----------------

列表对象反向排序的结果:[9, 5, 4, 2, 1]

元组对象反向排序的结果:[8, 7, 2, 2, 1]

字符串对象反向排序的结果:[‘s’, ‘f’, ‘e’, ‘d’, ‘c’, ‘b’, ‘a’]

集合对象反向排序的结果:[22, 8, 4, 2, 1]

字典对象反向排序的结果:[‘key5’, ‘key4’, ‘key3’, ‘key2’, ‘key1’]

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

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

相关文章

基于 Ray 的大规模离线推理

本文整理自字节跳动基础架构资深研发工程师王万兴在火山引擎开发者社区 Meetup 中的分享。大模型离线推理&#xff0c;是指在具有数十亿或数千亿参数的大规模模型上进行分布式推理的过程。相较于常规模型推理&#xff0c;在模型切分、数据处理和数据流、提升 GPU 利用率方面面临…

ROCK PI S音频开发(一)系统准备

1、连接WIFI sudo nmcli r wifi on sudo nmcli dev wifi sudo nmcli dev wifi connect "SSID" password "PASSWORD" 2、更新源 sudo apt-get update sudo apt-get install git wget export DISTROfocal-stable wget -O - apt.radxa.com/$DISTRO/publ…

PHP快速实战20-PHP7中的垃圾回收机制与原理讲解

文章目录 前言PHP垃圾回收实现的原理垃圾回收机制引用计数循环垃圾收集 实现原理 总结 前言 本文已收录于PHP全栈系列专栏&#xff1a;PHP快速入门与实战 在计算机程序中&#xff0c;垃圾回收指的是一种自动管理内存的技术。在程序执行过程中&#xff0c;分配给它的内存会随着…

2023年软件测试趋势?测试人的发展前景?“我“到底该如何走...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 现在开始学习软件…

NetSuite 中国财务常用报表功能包

目录 1.致谢 2.功能说明 2.1 概述 2.2 报表说明 3.安装 4.操作指南 4.1 CLR_资产负债表 4.2 CLR_资产负债表&#xff08;期初/发生/结余&#xff09; 4.3 CLR_利润表 4.4 CLR_利润表季报 4.5 CLR_现金流量表 4.6 CLR_现金流量表季报 4.7 CLR_总账 4.8 CLR_序时账…

《消息队列高手课》课程学习笔记(八)

如何实现高性能的异步网络传输&#xff1f; **异步与同步模型最大的区别是&#xff0c;同步模型会阻塞线程等待资源&#xff0c;而异步模型不会阻塞线程&#xff0c;它是等资源准备好后&#xff0c;再通知业务代码来完成后续的资源处理逻辑。**这种异步设计的方法&#xff0c;…

深入理解深度学习——注意力机制(Attention Mechanism):注意力评分函数(Attention Scoring Function)

分类目录&#xff1a;《深入理解深度学习》总目录 《深入理解深度学习——注意力机制&#xff08;Attention Mechanism&#xff09;&#xff1a;注意力汇聚与Nadaraya-Watson 核回归》中使用了高斯核来对查询和键之间的关系建模。式中的高斯核指数部分可以视为注意力评分函数&a…

Spark笔记

DBeaver数据库连接器 Download | DBeaver Community shell命令 bin/spark-submit –class cn.edu.ncut.sparkcore.wordcount.Test03_WordCount_cluster –deploy-mode cluster –master yarn ./sparkcore-1.0-SNAPSHOT.jar 10 血缘关系查看 toDebugString()&#xff1a…

深入篇【Linux】学习必备:【文本编辑器】vim的基本介绍及使用

深入篇【Linux】学习必备&#xff1a;【文本编辑器】vim的基本介绍及使用 Ⅰ.vim基本简介Ⅱ.vim的基本操作⏰【命令模式下】1.移动光标2.复制删除粘贴3.替换更改4.撤销指令 ⏰【底行模式下】1.查找字符2.保存退出3.查看所有模式 Ⅲ.简单vim配置1.配置文件位置2.使用插件 Ⅰ.vim…

前后端交互三、Ajax加强

零、文章目录 前后端交互三、Ajax加强 1、XMLHttpRequest的基本使用 &#xff08;1&#xff09;什么XMLHttpRequest XMLHttpRequest&#xff08;简称 xhr&#xff09;是浏览器提供的 Javascript 对象&#xff0c;通过它&#xff0c;可以请求服务器上的数据资源。jQuery 中的…

力扣 209. 长度最小的子数组

一、题目描述 给定一个含有 n 个正整数的数组和一个正整数 target。 找出该数组中满足其和大于等于 target 的长度最小的连续子数组&#xff0c;并返回其长度。如果不存在符合条件的子数组&#xff0c;返回 0。 示例 1&#xff1a; 输入&#xff1a;target 7, nums [2,3,1…

Servlet详解

目录 一. Servlet介绍 1.1 概念 2.2 Servlet架构 二. 创建一个Servlet程序 2.1 创建一个Maven项目 2.2 引入 jar 包 2.3 创建目录 2.4 编写代码 2.5 打包程序 2.6 部署程序 2.7 验证程序 三. Servlet常用API 3.1 HttpServlet 3.2 HttpServletRequest 3.2 HttpServlet…

深入了解SSM框架(案例(SSM+Jsp) + 详细分析 + 思维导图)

1.Spring Spring就像是整个项目中装配bean的大工厂&#xff0c;在配置文件中可以指定使用特定的参数去调用实体类的构造方法来实例化对象。也可以称之为项目中的粘合剂。 Spring的核心思想是IoC&#xff08;控制反转&#xff09;&#xff0c;即不再需要程序员去显式地new一个…

swagger 接口测试,用 python 写自动化时该如何处理?

在使用Python进行Swagger接口测试时&#xff0c;可以使用requests库来发送HTTP请求&#xff0c;并使用json库和yaml库来处理响应数据。以下是一个简单的示例代码&#xff1a; 如果你想学习自动化测试&#xff0c;我这边给你推荐一套视频&#xff0c;这个视频可以说是B站百万播…

vim编辑器基本使用

一、写在前面 今天在练习git相关操作时&#xff0c;无意间发现当你使用commit命令提交代码时&#xff0c;忘记添加备注信息会自动进入一个奇怪的模式&#xff0c;按esc键亦或是ctrlC都无法退出&#xff0c;这个奇怪的模式也就是vim编辑器。如下图&#xff1a; vim是一种文本…

前端工程化-VUE

前端工程化-VUE Vue-cliNode.js1&#xff0e;什么是Node.js2&#xff0e;Node.js的安装 高效的开发离不开基础工程的搭建。本章主要介绍如何使用Vue进行实际SPA项目的开发&#xff0c;这里使用的是目前热门的JavaScript应用程序模块打包工具Webpack&#xff0c;进行模块化开发、…

嵌入式C语言中if/else如何优化详解

观点一&#xff08;灵剑&#xff09;&#xff1a; 前期迭代懒得优化&#xff0c;来一个需求&#xff0c;加一个if&#xff0c;久而久之&#xff0c;就串成了一座金字塔。 当代码已经复杂到难以维护的程度之后&#xff0c;只能狠下心重构优化。那&#xff0c;有什么方案可以优雅…

Spring 源码解析 - FactoryBean 获取 Bean 过程

一、FactoryBean FactoryBean是Spring框架提供的一个核心接口之一&#xff0c;用来创建复杂或无法通过默认构造函数创建的对象。这种情况下通过实现FactoryBean接口&#xff0c;可以自定义实例化Bean的过程&#xff0c;包括Bean的对象类型、初始化、销毁等。 在应用场景中&am…

RK3588平台开发系列讲解(进程篇)程序的二进制格式 ELF

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、ELF 文件二、二进制文件组成三、运行程序为进程沉淀、分享、成长,让自己和他人都能有所收获!😄 📢CPU 是不能执行文本文件里面的指令的,这些指令只有人能看懂,CPU 能够执行的命令是二进制的,比如“0101”…

Selenium还能这么玩:自动管理浏览器

这是个系列文章&#xff0c;主要讲selenium一些实战操作&#xff0c;使用 Python 编写代码。可以把他们应用到自动化测试&#xff0c;也可以应用到网络爬虫中。 这篇文章介绍一个操作&#xff0c;可以让selenium 控制浏览器共用同一个 session。他的应用场景是&#xff1a;共用…