python元组

2023-11-19

第026讲:元组

小甲鱼python第26讲

课堂笔记

rhyme = (1, 2, 3, 4, 5, '上山打老虎')
rhyme
(1, 2, 3, 4, 5, '上山打老虎')
rhyme = 1, 2, 3, 4, 5, '上山打老虎'
rhyme
(1, 2, 3, 4, 5, '上山打老虎')
rhyme[0]
1
rhyme[-1]
'上山打老虎'
rhyme[1] = 10
Traceback (most recent call last):
  File "<pyshell#36>", line 1, in <module>
    rhyme[1] = 10
TypeError: 'tuple' object does not support item assignment
rhyme[3:]
(4, 5, '上山打老虎')
rhyme[:]
(1, 2, 3, 4, 5, '上山打老虎')
rhyme[::-1]
('上山打老虎', 5, 4, 3, 2, 1)
rhyme[::2]
(1, 3, 5)
nums = (3, 1, 9, 6, 8, 3, 5, 3)
nums.count(3)
3
heros = ("蜘蛛", "绿巨人", "黑寡妇")
heros.index("黑寡妇")
2
s = (1, 2, 3)
t = (4, 5, 6)
s + t
(1, 2, 3, 4, 5, 6)
s * 3
(1, 2, 3, 1, 2, 3, 1, 2, 3)
w = (s, t)
w
((1, 2, 3), (4, 5, 6))
for each in s:
    print(each)

    
1
2
3
for i in w:
    for each in i:
        print(each)

        
1
2
3
4
5
6
s = (1, 2, 3, 4, 5)
[each * 2 for each in s]
[2, 4, 6, 8, 10]
(each * 2 for each in s)
<generator object <genexpr> at 0x000001DBFAE798C0>
(1,)
(1,)
x = (520,)
type(x)
<class 'tuple'>
x = (520)
type(x)
<class 'int'>
#打包和解压
t = (123, "FishC", 3.14)
t
(123, 'FishC', 3.14)
x, y, z = t
x
123
y
'FishC'
z
3.14
t = [a,b,c]
Traceback (most recent call last):
  File "<pyshell#73>", line 1, in <module>
    t = [a,b,c]
NameError: name 'a' is not defined
a, b, c, d, e = "FishC"
a
'F'
b
'i'
c
's'
d
'h'
e
'C'
x, y, z = [1, 2, 3]
x
1
y
2

z
3
a, b, c = "FishC"
Traceback (most recent call last):
  File "<pyshell#85>", line 1, in <module>
    a, b, c = "FishC"
ValueError: too many values to unpack (expected 3)
a, b, *c = "FishC"
a
'F'
b
'i'
c
['s', 'h', 'C']
x, y = 10, 20
x
10
y
20
_ = (10, 20)
_
(10, 20)
x, y = _
x
10
y
20
s = [1,2,3]
t = [4,5,6]
w = (s,t)
w
([1, 2, 3], [4, 5, 6])
w[0][0] = 0
w
([0, 2, 3], [4, 5, 6])

课后作业

0. 既然元组和字符串都是不可改变的对象,那么两者有何区别?
  元组可以存放多种类型的数据,而字符串只能够存放字符类型

1. 请写出仅有一个元素 5 的元组。
  5, 或者 (5,)

2. 请问下面代码得到的结果是?

>>> t = (3, 1, 4, 9, 8)
>>> t.sort()

  报错。元组是不可变的,所有它没有 sort() 方法(该方法在列表中是对列表进行原地排序)。

3. 请问下面代码得到的结果是?

>>> t = (3, 1, 4, 9, 8)
>>> t[2:4]

  (4, 9) 。 有些鱼油可能会很纳闷 “不是说不能修改元组的内容吗?”,但是,这里并没有修改它的内容,t 的内容仍然是 (3, 1, 4, 9, 8),t[2:4] 是通过切片语法生成了一个新的元组 (4, 9)。

4. 请问我们可以修改的是 “元组中的列表” 还是 “列表中的元组” ?
  可以修改的是 “元组中的列表” 。

5. 用一个专业的名词描述以下代码的行为?
  解包。将赋值号右边变量的多个值拆分给(赋值号)左边各个变量的行为,我们称之为解包。

6. 请问下面代码为什么会出错?如何解决呢?

>>> a, b, c = "FishC"
Traceback (most recent call last):
  File "<pyshell#3>", line 1, in <module>
    a, b, c = "FishC"
ValueError: too many values to unpack (expected 3)

  出错的原因是赋值号左侧的变量名数量,跟右侧序列的元素数量不一致。
  解决方案一,使得赋值号左右两侧的数量一致:

>>> a, b, c, d, e = "FishC"

  解决方案二,将剩余的多个对象分配到一个变量中(使用星号):

>>> a, *b, c = "FishC"
>>> a
'F'
>>> b
['i', 's', 'h']
>>> c
'C'

7. 如果我们非要修改一个元组,你觉得应该怎么做?
  创建一个新的元组,并赋值给同个变量。这是一种“狸猫换太子”的做法(看着是成功地修改了元组,但其实是在一个新的地方创建了一个新的元组并赋值给同个变量)。

>>> t = (1, 2, 3, 4, 5)
>>> t = (1, 1) + t[1:3] + (5,)
>>> t
(1, 1, 2, 3, 5)

8. 有一天,居委会的大妈找上门,让你帮她用 Python 创建一个对象,用于登记接种新冠疫苗的情况。登记内容包含(姓名、生日、接种日期),你应该怎么做?
  比较恰当的方法是使用列表来存储,然后由于每个人登记的内容是不需要改变的,所以可以用元组打包。

>>> checked = [("口口布", 19910220, 20210601), ("弓长飞", 19630509, 20210623), ("刘Baby", 19990520, 20210520)]

  这样添加一个新的登记就只需要 checked.append(("关习习", 20000220, 20210806))

9. 如果我们想知道到底是创建列表的速度快,还是创建元组的速度快,应该如何做呢?
  咱们可以使用一个叫做timeit模块来实现,自学文档 -> timeit -- 测量代码片段的执行时间

import timeit

sum1 = 0
sum2 = 0
speed1 = 0
speed2 = 0

test1 = timeit.repeat('num = [1, 2, 3, 4]', repeat = 100)
test2 = timeit.repeat('num = (1, 2, 3, 4)', repeat = 100)

for each in test1:
    sum1 = sum1 + each
speed1 = sum1 / 100

for each in test2:
    sum2 = sum2 + each
speed2 = sum2 / 100

print("创建列表的平均速度是:",speed1)
print("创建元组的平均速度是:",speed2)

或者

import timeit
    
t_speed = timeit.repeat('t = (1, 2, 3, 4, 5)', repeat=100)
l_speed = timeit.repeat('l = [1, 2, 3, 4, 5]', repeat=100)
    
# 统计生成元组的平均速度
t_sum = 0
for each in t_speed:
    t_sum = t_sum + each
    
t_average = t_sum / len(t_speed)
    
# 统计生成列表的平均速度
l_sum = 0
for each in l_speed:
    l_sum = l_sum + each

l_average = l_sum / len(l_speed)
    
print("创建元组的平均速度是:", t_average,sep='')
print("创建列表的平均速度是:", l_average,sep='')  

其实再往后几节,大家学习到 sum() 函数之后,代码就能简单多了……

import timeit
    
t_speed = timeit.repeat('t = (1, 2, 3, 4, 5)', repeat=100)
l_speed = timeit.repeat('l = [1, 2, 3, 4, 5]', repeat=100)
    
t_average = sum(t_speed) / len(t_speed)
l_average = sum(l_speed) / len(l_speed)
    
print("创建元组的平均速度是:", t_average)
print("创建列表的平均速度是:", l_average)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python元组 的相关文章

  • 使用 MongoDB 作为我们的主数据库,我应该使用单独的图数据库来实现实体之间的关系吗?

    我们目前正在为一家专业公司内部实施类似 CRM 的解决方案 由于存储信息的性质以及信息的不同值和键 我们决定使用文档存储数据库 因为它完全适合目的 在本例中我们选择 MongoDB 作为此 CRM 解决方案的一部分 我们希望存储实体之间的关
  • 类的 IPython 表示

    我正在使用我创建的模块尝试 IPython 但它没有显示类对象的实际表示 相反 它显示类似的内容 TheClass module TheClass name I heavily在这个模块中使用元类 我有真正有意义的类表示 应该向用户显示 是
  • 如何在 Matplotlib 饼图周围绘制箭头以将每个标签指向圆圈中各自的部分?

    我一直在用 Matplotlib 绘制一些图表 我有一个饼图 想要在图表周围绘制箭头 使每个标签都指向图表 我有一个例子 这是我当前的代码 import matplotlib pyplot as plt plt rcParams font
  • 我应该使用 Python 双端队列还是列表作为堆栈? [复制]

    这个问题在这里已经有答案了 我想要一个可以用作堆栈的 Python 对象 使用双端队列还是列表更好 元素数量较少还是数量较多有什么区别 您的情况可能会根据您的应用程序和具体用例而有所不同 但在一般情况下 列表非常适合堆栈 append is
  • Django Rest Framework 是否有第三方应用程序来自动生成 swagger.yaml 文件?

    我有大量的 API 端点编写在django rest framework并且不断增加和更新 如何创建和维护最新的 API 文档 我当前的版本是 Create swagger yaml文件并以某种方式在每次端点更改时自动生成 然后使用此文件作
  • 嵌套列表的重叠会产生不必要的间隙

    我有一个包含三个列表的嵌套 这些列表由 for 循环填充 并且填充由 if 条件控制 第一次迭代后 它可能类似于以下示例 a 1 2 0 0 0 0 0 0 4 5 0 0 0 0 0 0 6 7 根据条件 它们不重叠 在第二次迭代之后 新
  • 如何从Python中的函数返回多个值? [复制]

    这个问题在这里已经有答案了 如何从Python中的函数返回多个变量 您可以用逗号分隔要返回的值 def get name you code return first name last name 逗号表示它是一个元组 因此您可以用括号将值括
  • 使用主题交换运行多个 Celery 任务

    我正在用 Celery 替换一些自制代码 但很难复制当前的行为 我期望的行为如下 创建新用户时 应向tasks与交换user created路由键 该消息应该触发两个 Celery 任务 即send user activate email
  • 为什么 web2py 在启动时崩溃?

    我正在尝试让 web2py 在 Ubuntu 机器上运行 所有文档似乎都表明要在 nix 系统上运行它 您需要下载源代码并执行以下操作 蟒蛇 web2py py 我抓住了source http www web2py com examples
  • Tensorboard SyntaxError:语法无效

    当我尝试制作张量板时 出现语法错误 尽管开源代码我还是无法理解 我尝试搜索张量板的代码 但不清楚 即使我不擅长Python 我这样写路径C Users jh902 Documents logs因为我正在使用 Windows 10 但我不确定
  • 从 Powershell 脚本安装 Python

    当以管理员身份从 PowerShell 命令行运行以下命令时 可以在 Windows 11 上成功安装 Python c temp python 3 11 4 amd64 exe quiet InstallAllUsers 0 Instal
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • 无法导入 langchain.agents.load_tools

    我正在尝试使用 LangChain Agents 但无法导入 load tools 版本 langchain 0 0 27 我尝试过这些 from langchain agents import initialize agent from
  • 嵌套作用域和 Lambda

    def funct x 4 action lambda n x n return action x funct print x 2 prints 16 我不太明白为什么2会自动分配给n n是返回的匿名函数的参数funct 完全等价的定义fu
  • Django 视图中的“请求”是什么

    在 Django 第一个应用程序的 Django 教程中 我们有 from django http import HttpResponse def index request return HttpResponse Hello world
  • Pandas 组合不同索引的数据帧

    我有两个数据框df 1 and df 2具有不同的索引和列 但是 有一些索引和列重叠 我创建了一个数据框df索引和列的并集 因此不存在重复的索引或列 我想填写数据框df通过以下方式 for x in df index for y in df
  • 如何使用 Python 3 检查目录是否包含文件

    我到处寻找这个答案但找不到 我正在尝试编写一个脚本来搜索特定的子文件夹 然后检查它是否包含任何文件 如果包含 则写出该文件夹的路径 我已经弄清楚了子文件夹搜索部分 但检查文件却难倒了我 我发现了有关如何检查文件夹是否为空的多个建议 并且我尝
  • 找到一个数字所属的一组范围

    我有一个 200k 行的数字范围列表 例如开始位置 停止位置 该列表包括除了非重叠的重叠之外的所有类型的重叠 列表看起来像这样 3 5 10 30 15 25 5 15 25 35 我需要找到给定数字所属的范围 并对 100k 个数字重复该
  • 如何使用 AWS Lambda Python 读取 AWS S3 存储的 Word 文档(.doc 和 .docx)文件内容?

    我的场景是 我尝试使用 python 实现从 Aws Lambda 读取 AWS 存储的 S3 word 文档 doc 和 docx 文件内容 下面的代码是我使用的 我的问题是我可以获取文件名 但无法读取内容 def lambda hand
  • 如果 PyPy 快 6.3 倍,为什么我不应该使用 PyPy 而不是 CPython?

    我已经听到很多关于PyPy http en wikipedia org wiki PyPy项目 他们声称它比现有技术快 6 3 倍CPython http en wikipedia org wiki CPython口译员开启他们的网站 ht

随机推荐

  • Log4Net 日志管理

    Log4Net日志管理 A Log4Net日志管理 Log4Net的日志级别如下 级别 允许的方法 Boolean属性 优先级别 OFF Highest FATAL void Fatal bool IsFatalEnabled RROR v
  • 函数的节流与防抖

    1 节流 节流的意思是 规定时间内 只触发一次 比如我们设定500ms 在这个时间内 无论点击按钮多少次 它都只会触发一次 具体场景可以是抢购时候 由于有无数人 快速点击按钮 如果每次点击都发送请求 就会给服务器造成巨大的压力 但是我们进行
  • C语言-求因子和

    求因子和 题目描述 一个数的因子和不包括它本身的所有因子之和 如12的因子有1 2 3 4 6所以12的因子和是16 现在给定一个数n n lt 10 9 求它的因子和 输入格式 一个数 输出格式 一个数 样例输入 12 样例输出 16 提
  • 有趣的MyBatis——延迟加载

    为什么80 的码农都做不了架构师 gt gt gt 我们知道在resultMap中使用级联对于查找相关数据来说很方便 比如说查找雇员基本信息 顺便得到了雇员的体检信息 家庭信息 部门信息 但是有时我们不需要相关数据 那么在一些复杂的系统中
  • 初学MaxCompute

    MaxComputer是阿里云提供的一种全新的大数据计算服务 其具备更高效的计算及存储能力 本人的理解就是一个类似于HBase Hive的云上的数据仓库 参考官方文档系列 https yq aliyun com articles 85595
  • “ping“不是内部或外部命令,也不是可运行的程序 或批处理文件。

    输入ping 出现问题 ping 不是内部或外部命令 也不是可运行的程序或批处理文件 我的电脑 属性 高级系统设置 环境变量 系统变量 PATH 编辑 输入C Windows System32 再次输入ping 即表示可以了
  • 数据迁移时,需要大量set时的批量操作

    我遇到了一种情况 A类有很多的数据 需要迁移到新的A类或者和字段和A类相同的数据 例如 A1 A2 A3 A4 A100 需要进行批量操作 A1 gt 例 加密 A2 gt 加密 每个字段或部分字段都需要加密 那么正常的情况下需要有多少字段
  • C语言入门

    什么是C语言 C语言是一门通用计算机编程语言 广泛应用于底层开发 C语言的设计目标是提供一种能以简易 的方式编译 处理低级存储器 产生少量的机器码以及不需要任何运行环境支持便能运行的编程 语言 尽管C语言提供了许多低级处理的功能 但仍然保持
  • 谈谈BFC

    谈谈BFC 介绍 BFC Block Formatting Context 块级格式化上下文 它理解成一个独立的区域 此区域里面的子元素不会影响到外面的元素 反之也如此 BFC布局规则 内部的Box会在垂直方向 一个接一个地放置 Box垂直
  • 服务器选哪个系统,服务器选择哪个操作系统

    服务器选择哪个操作系统 内容精选 换一换 裸金属服务器在详情页面显示的云硬盘设备名称与操作系统内部的设备名称不一致 为防止设备名称变化对业务造成影响 建议通过UUID的方式使用云硬盘 当携带云硬盘创建裸金属服务器完成后 裸金属服务器详情界面
  • DenyHosts安装与部署

    DenyHosts是Python语言写的一个程序软件 运行于Linux上预防SSH暴力破解的 它会分析sshd的日志文件 var log secure 当发现重复的攻击时就会记录IP到 etc hosts deny文件 从而达到自动屏IP的
  • Http协议详解

    引入 超文本传输协议 HTTP HyperText Transfer Protocol 是互联网上应用最为广泛的一种网络协议 所有的WWW文件都必须遵守这个标准 设计HTTP最初的目的是为了提供一种发布和接收HTML页面的方法 1960年美
  • 日赚4.12亿,腾讯最新员工薪酬公布:均薪破100万!!!

    近日 腾讯发布2023年第二季度财报 有一项数据冲上热搜 引起热议 据计算 腾讯人均年薪破100万 网友直呼 酸了酸了 这是认真的吗 跟随播妞一起来看看吧 腾讯员工平均年薪达100万 从大厂财报看互联网行业回暖之势 近日 腾讯发布截至6月3
  • [Python]保姆级win11环境安装Python

    1 下载安装包 https www python org downloads 选择自己的系统对应的安装包 我的是Windows系统 我就直接选择它了 选择64位安装包 根据自己系统对应的安装包 2 开始安装 去下载路径下 双击源文件 开始安
  • LeetCode第321场周赛题解

    这周周赛没有什么过多难的 也是可以自己写完的 芜湖 第一道题 6245 找出中枢整数 给你一个正整数 n 找出满足下述条件的 中枢整数 x 1 和 x 之间的所有元素之和等于 x 和 n 之间所有元素之和 返回中枢整数 x 如果不存在中枢整
  • Android之RecyclerView多布局

    做一个项目的主页面的时候 想要它呈现出来的效果 不单一 更丰富那就要使用多布局来展现出来 那么就要思考一个问题 他呈现的是多个布局 怎么才能展现出来不同的布局 逻辑很简单 通过设置几个flag 来表示这些布局当前显示的是哪个布局 接下来 和
  • 使用python对光谱数据进行lorentz峰值拟合(bounds限定拟合参数范围)

    1 lorentz峰值拟合 发光光谱是一种用于表征二维半导体材料光学性质的重要技术 它可以反映出材料中的载流子密度 缺陷态 激子束缚能等信息 由于二维半导体材料的厚度极其薄 其发光信号往往很弱 且受到基底 环境和测量设备等因素的干扰 因此需
  • MySQL怎么实现行转列SQL

    问题 关于Mysql 的分级输出问题 情景 学校里面记录成绩 每个人的选课不一样 而且以后会添加课程 所以不需要把所有课程当作列 数据表里面数据如下图 使用姓名 课程作为联合主键 有些需求可能不需要联合主键 本文以MySQL为基础 其他数据
  • 在JSP中弹出信息框

    下面我以登录界面的代码为例子 在LoginServlet中 判断验证码是否正确 忽略大小写 if attribute equalsIgnoreCase user getCheckCode User login new UserDao log
  • python元组

    第026讲 元组 小甲鱼python第26讲 课堂笔记 rhyme 1 2 3 4 5 上山打老虎 rhyme 1 2 3 4 5 上山打老虎 rhyme 1 2 3 4 5 上山打老虎 rhyme 1 2 3 4 5 上山打老虎 rhym