python基础之元组、集合和函数的定义与返回值

1.元祖

        1.元祖的定义

    元组的数据结构跟列表相似

    特征:有序、

  1. 有序:有(索引/下标/index) 正序、反序
  2. 标识符: ( ) 里面的元素是用英文格式的逗号分割开来
  3. 关键字:tuple
  4. 列表和元组有什么区别?

    元组是不可变的:程序在运行的时候,无法对其进行改变 -- 没有提供关键字、方法去操作它,没有增删改的操作

  5. 既然无法对其进行变化,那么为什么要有元组的存在?

    安全性考虑 -- 国内的省份(省、市) 变量,常量

    但凡是可以进行操作的数据,都存在安全隐患

示例:

        

tp = ()  # 定义一个空元组
print(type(tp))  # <class 'tuple'>tp1 = (1, 2, 3, 4, 5)  # 定义一个有值的元组
print(tp1)

2.问题res是由tp1 和 tp2 拼接在一起的,还是额外生成的? -- 额外生成的一个新元组

tp1 = (1, 2, 3, 4)
tp2 = (100, 3.14)res = tp1 + tp2
print(res)
print(type(res))

元组乘以int类型的数字的res1是打印两次tp1,还是额外生成一个新的元组?

tp1 = (1, 2, 3, 4)
tp2 = (100, 3.14)res1 = tp1 * 2
print(res1)
print(type(res1))

怎么修改元祖?

先转换成列表,修改数据,然后在转化成元组

tp1 = (1, 2, 3, 4)# 获取修改之前的内存地址
print(f"修改之前的内存地址: {id(tp1)}")# 1.先转换成列表
lst1 = list(tp1)
# print(lst1)
# print(type(lst1))# 2.修改数据
lst1.append(5)
# print(lst1)
# print(type(lst1))# 3.然后在转化成元组
tp1 = tuple(lst1)  # 变量的重定义 -- 对变量进行重新赋值
# print(tp1)
# print(type(tp1))# 获取修改之后的内存地址
print(f"修改之后的内存地址: {id(tp1)}")# 问题:修改之前的tp1的内存地址和修改之后的一样么? 不一样,是一个新的元组,只是引用的变量名称是一样的,但是存放的内存地址不一样

2.集合

  集合的定义

定义:由不同的元素组成的一个数据结构,无序排列的

标识符:{ }

关键字:set

特征:无序,元素不能重复,集合和集合之间可以做运算

特征:

无序排列 -- 存放在内存地址之前是无序的

集合里面的元素不能重复 -- 自动去重



集合的操作:

      进行强制转换

        

set1 = {"欢迎", "来到", "秋殇", "老师", "的", "博客", "!"}lst1 = list(set1)
print(type(lst1))
print(f"lst1中的第一个值:{lst1[0]}")  # 不确定、随机的

问题:如果转换完成后,连续打印,第一次的值和后面N次的值,是一样的么?

答:一样的,原理:存放内存地址之前,是随机的,但是一旦存放了,后续的内容都是固定的

集合的添加 -- add()
集合的删除 -- pop(随机删除,因为没有下标)、remove(删除指定的值).discard(提前准备好,想删除的值,删除多次,都不会报错)
# set1.pop()  # 随机删除,因为没有下标
# print(set1)# set1.remove("秋殇")  # 删除指定的值,如果删除不存在的值,会报错
# set1.remove("秋殇")
# print(set1)set1.discard("老师")  # 提前准备好,想删除的值,删除多次,都不会报错
set1.discard("老师")
print(set1)

集合的运算:

运算的方式:交集、并集、差集、交叉补集

交集:获取两个集合之间相同的部分 -- intersection

        

set1 = {"qs", "大大"}
set2 = {"qs", "dd"}print(f"获取两个集合之间相同的部分: {set1.intersection(set2)}")  # 获取两个集合之间相同的部分: {'七夜老师'}

并集:合并两个集合,自动去重 -- union

差集:获取集合中,另一个集合没有的内容 -- difference

交叉补集

set3 = {"qsdd" "高", "富", "帅"}
set4 = {"qsdd", "矮", "矬", "穷"}print(f"剔除公有的内容,留下双方独有的内容: {set3.symmetric_difference(set4)}")

3.函数

1.函数的定义

定义:将一段公式/逻辑代码定义在一个特定的标题(函数名称)下,通过一块,或者一行代码来执行固定好的逻辑, 而这些代码只有函数被调动的时候才会执行

通俗点:封装一些代码

核心点:函数的定义、函数的调用

函数的定义:封装好的代码,只有在调用的时候,才会执行 -- 定义函数的时候,不会执行函数内部的代码

函数的调用:语法:函数的名称() -- 调用函数,执行函数内部的代码

语法规则:

def 自定义的函数名称():封装的代码 ... ...

函数的参数:

定义函数的时候,可以在小括号里面定义一些参数

定义的参数,可以不给值,然后在调用函数的位置,进行传参

def demo1(name, age, addr):print(f"""=====demo1函数里面的参数=====name: {name}age: {age}addr: {addr}""")demo1(age=18, name="qsdd", addr="cndn")

不定长传参

        单个*号的参数:args是默认的名称,可以随意修改 -- 元组类型

# def demo3(*args):
#     print(f"获取到的值:{args}")
#     print(f"获取值的类型: {type(args)}")
#     print(args[0])
#
#
# demo3(1, 2, 3, 4, 5)

两个*号:kwargs是默认的名称,可以随意修改 -- 字典类型

# def demo4(**kwargs):
#     print(f"获取到的值:{kwargs}")
#     print(f"获取值的类型: {type(kwargs)}")
#
#
# demo4(name="七夜老师", age=18, addr="湖南长沙")

函数的返回值

1.函数的内部可以写return返回值,或者不写

2.如果不写return,也可以执行,不会报错,但是接收到的值,还是 None

3.如果写了,可以把需要传递的值,传递给调用函数的地方,通过两种方式获取(print、变量)

4.写了return但是没有传值的情况下,获取到的值是 None

5.如果有return返回值的情况下,可以通过两种方式获取

# def add1():  # 函数的名称: add1
#     # 需要封装的代码
#     m = 1
#     n = 2
#     s = m + n
#     print(f"m + n 的结果:{s}")
#
#
# add1()# 想获取s的值,然后进行 + 100的操作?
# print(s + 100)  # 函数的作用域问题 -- 后面的课程会讲,暂时不讲# def add2():
#     m = 1
#     n = 2
#     s = m + n
#     # 不直接写print,因为无法传递数据
#     # 通过函数的返回关键字return,把数据传递给调用函数的地方
#     return s# add2()
# 问题:此时调用函数,会不会打印s的值? -- 不会
# 因为:没有对获取到的s值,进行打印操作# 方式一:直接通过print打印获取到函数返回值
# print(f"获取到函数内部的s:{add2()}")# 方式二:通过变量接收函数的返回值,然后进行后续的操作
# res = add2()
# print(f"res + 100的值:{res + 100}")# # 写了return但是没有传值的情况下,获取到的值是 None
# def add3():
#     m = 1
#     n = 2
#     s = m + n
#     return# 如果不写return,也可以执行,不会报错,但是接收到的值,还是 None
# def add4():
#     m = 1
#     n = 2
#     s = m + n
#
#
# # 方式一:
# print(add4())
#
# # 方式二:
# res = add4()
# print(res)# lst1 = [1, 2, 3]
# print(lst1.extend("qsdd"))

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

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

相关文章

异常风云:解码 Java 异常机制

哈喽&#xff0c;各位小伙伴们&#xff0c;你们好呀&#xff0c;我是喵手。 今天我要给大家分享一些自己日常学习到的一些知识点&#xff0c;并以文字的形式跟大家一起交流&#xff0c;互相学习&#xff0c;一个人虽可以走的更快&#xff0c;但一群人可以走的更远。 我是一名后…

C语言数据类型的介绍,类型的基本归类,整型在内存中的存储,原码、反码、补码,大小端等介绍

文章目录 前言一、数据类型的介绍类型的意义 1. 类型的基本归类&#xff08;1&#xff09;. 整型家族&#xff08;2&#xff09;. 浮点数家族&#xff08;3&#xff09;. 构造类型&#xff08;4&#xff09;. 指针类型&#xff08;5&#xff09;. 空类型 二、整型在内存中的存储…

[Collection与数据结构] PriorityQueue与堆

1. 优先级队列 1.1 概念 前面介绍过队列&#xff0c;队列是一种先进先出(FIFO)的数据结构&#xff0c;但有些情况下&#xff0c;操作的数据可能带有优先级&#xff0c;一般出队列时&#xff0c;可能需要优先级高的元素先出队列&#xff0c;该中场景下&#xff0c;使用队列显然…

自动化机器学习流水线:基于Spring Boot与AI机器学习技术的融合探索

&#x1f9d1; 作者简介&#xff1a;阿里巴巴嵌入式技术专家&#xff0c;深耕嵌入式人工智能领域&#xff0c;具备多年的嵌入式硬件产品研发管理经验。 &#x1f4d2; 博客介绍&#xff1a;分享嵌入式开发领域的相关知识、经验、思考和感悟&#xff0c;欢迎关注。提供嵌入式方向…

Python常用包介绍

数据处理 1.numpy&#xff08;数据处理和科学计算&#xff09; import numpy as np np.set_printoptions(precision2, suppressTrue) # 设置打印选项&#xff0c;保留两位小数&#xff0c;禁止科学计数法arr np.arange(1, 6) # 使用arange函数创建数组 print(arr)# 输出&…

深度学习下的视觉SLAM综述

作者&#xff1a;黄泽霞&#xff0c;邵春莉 来源&#xff1a;《机器人》 编辑&#xff1a;东岸因为一点人工一点智能 深度学习下的视觉SLAM综述到目前为止&#xff0c;深度学习与SLAM的结合已经在视觉里程计、场景识别与全局优化等各种任务中取得了显著的成果。同时&#xf…

Prompt Engineering,提示工程

什么是提示工程&#xff1f; 提示工程也叫【指令工程】。 Prompt发送给大模型的指令。比如[讲个笑话]、[用Python编个贪吃蛇游戏]、[给男/女朋友写情书]等看起来简单&#xff0c;但上手简单精通难 [Propmpt]是AGI时代的[编程语言][Propmpt]是AGI时代的[软件工程][提示工程]是…

线上申报开放时间!2024年阜阳市大数据企业培育认定申报条件、流程和材料

2024年阜阳市大数据企业培育认定申报条件、流程和材料&#xff0c;线上申报开放时间整理如下 一、2024年阜阳市大数据企业培育认定申报要求 &#xff08;一&#xff09;经营范围 申请认定的企业应当从事以下生产经营活动&#xff1a; 1.从事数据收集、存储、使用、加工、传输、…

使用linux,c++,创作一个简单的五子棋游戏

#include <iostream> #include <vector> #include <unordered_map> using namespace std; // 棋盘大小 const int BOARD_SIZE 15; // 棋子类型 enum ChessType { EMPTY, BLACK, WHITE }; // 棋盘类 class ChessBoard { private: vect…

CHiME-8多通道远场语音识别Baseline介绍

语音领域每年都有很多比赛&#xff0c;每个比赛都有自己的侧重点&#xff0c;其中CHiME系列比赛的侧重点就是多通道远场语音识别&#xff0c;与其他的语音识别比赛有所区别的是&#xff0c;CHiME提供分布式麦克风和麦克风阵列数据&#xff0c;这样可以选择合适的前端算法以降低…

创建Spring Boot项目

选择Maven Archetype,之后再Archetype选择webapp 两个都打勾 这是当前的打勾 这个是以后都默认勾上 打开对应的路径&#xff0c;用vscode打开settings.xml 加入国内源 阿里云 若没有此文件可上网查找 若jar包出现问题&#xff0c;可在repostitory文件内全删除 之后在Maven刷…

第12章 最佳的UI体验——Material Design实战

第12章 最佳的UI体验——Material Design实战 其实长久以来&#xff0c;大多数人都认为Android系统的UI并不算美观&#xff0c;至少没有iOS系统的美观。以至于很多IT公司在进行应用界面设计的时候&#xff0c;为了保证双平台的统一性&#xff0c;强制要求Android端的界面风格必…

HarmonyOS开发案例:【 自定义弹窗】

介绍 基于ArkTS的声明式开发范式实现了三种不同的弹窗&#xff0c;第一种直接使用公共组件&#xff0c;后两种使用CustomDialogController实现自定义弹窗&#xff0c;效果如图所示&#xff1a; 相关概念 [AlertDialog]&#xff1a;警告弹窗&#xff0c;可设置文本内容和响应回…

了解HTTP代理服务器:优势、分类及应用实践

在我们日常的网络使用中&#xff0c;我们经常听到HTTP代理服务器这个术语。那么&#xff0c;HTTP代理服务器到底是什么&#xff1f;它有什么优势和分类&#xff1f;又如何应用于实践中呢&#xff1f;让我们一起来了解一下。 HTTP代理服务器是一种位于客户端和服务器之间的中间…

图像处理基础知识

图像处理基础知识 图像 1、模拟图像 模拟图像&#xff0c;又称连续图像&#xff0c;是指在二维坐标系中连续变化的图像&#xff0c;即图像的像点是无限稠密的&#xff0c;同时具有灰度值&#xff08;即图像从暗到亮的变化值&#xff09;。 2、数字图像 数字图像&#xff0…

Python基础知识—运算符和if语句(二)

&#x1f3ac; 秋野酱&#xff1a;《个人主页》 &#x1f525; 个人专栏:《Java专栏》 《Python专栏》 ⛺️心若有所向往,何惧道阻且长 文章目录 1.输入和输出函数1.1输出函数1.2输入函数 2.常见运算符2.1赋值运算符2.2比较运算符2.3逻辑运算符2.4and逻辑与2.5or逻辑或2.6not逻…

ceph介绍

一、前言 Ceph 是一个完全分布式的系统&#xff0c;它将数据分布在整个集群中的多个节点上&#xff0c;以实现高可用性和容错性&#xff0c;ceph支持对象存储、块存储、文件存储所以被称为统一存储&#xff0c;ceph的架构由以下组件组成:mon、mgr、osd、mds、cephfs、rgw&#…

深度学习Day-14:RNN实现心脏病预测

&#x1f368; 本文为&#xff1a;[&#x1f517;365天深度学习训练营] 中的学习记录博客 &#x1f356; 原作者&#xff1a;[K同学啊 | 接辅导、项目定制] 要求&#xff1a; 本地读取并加载数据&#xff1b;了解循环神经网络RNN的构建过程&#xff1b;测试集accuracy达到87%…

自己搭建的大疆无人机RTMP流媒体服务延迟太大

流程&#xff1a;无人机摄像头->图传->遥控器->流媒体服务器->取流播放&#xff0c;延迟有10秒来的&#xff0c;大家有没有什么好的方案。

C# 结合JavaScript实现手写板签名并上传到服务器

应用场景 我们最近开发了一款笔迹测试功能的程序&#xff08;测试版&#xff09;&#xff0c;用户在手写板上手写签名&#xff0c;提交后即可测试出被测试者的心理素质评价分析。类似功能的场景还比如&#xff0c;在银行柜台办理业务&#xff0c;期间可能需要您使用手写设备进…