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元组 的相关文章

  • 从数据框中按索引删除行

    我有一个数组wrong indexes train其中包含我想从数据框中删除的索引列表 0 63 151 469 1008 要删除这些索引 我正在尝试这样做 df train drop wrong indexes train 但是 代码失败
  • python 中的代表

    我实现了这个简短的示例来尝试演示一个简单的委托模式 我的问题是 这看起来我已经理解了委托吗 class Handler def init self parent None self parent parent def Handle self
  • 如何迭代按值排序的 Python 字典?

    我有一本字典 比如 a 6 b 1 c 2 我想迭代一下by value 不是通过键 换句话说 b 1 c 2 a 6 最直接的方法是什么 sorted dictionary items key lambda x x 1 对于那些讨厌 la
  • 在 Python distutils 中从 setup.py 查找脚本目录的正确方法?

    我正在分发一个具有以下结构的包 mymodule mymodule init py mymodule code py scripts script1 py scripts script2 py The mymodule的子目录mymodul
  • Pandas 中允许重复列

    我将一个大的 CSV 包含股票财务数据 文件分割成更小的块 CSV 文件的格式不同 像 Excel 数据透视表之类的东西 第一列的前几行包含一些标题 公司名称 ID 等在以下列中重复 因为一家公司有多个属性 而不是一家公司只有一栏 在前几行
  • 如何通过在 Python 3.x 上按键来启动和中断循环

    我有这段代码 当按下 P 键时会中断循环 但除非我按下非 P 键 否则循环不会工作 def main openGame while True purchase imageGrab if a sum gt 1200 fleaButton ti
  • TensorFlow的./configure在哪里以及如何启用GPU支持?

    在我的 Ubuntu 上安装 TensorFlow 时 我想将 GPU 与 CUDA 结合使用 但我却停在了这一步官方教程 http www tensorflow org get started os setup md 这到底是哪里 con
  • 如何设置 Celery 来调用自定义工作器初始化?

    我对 Celery 很陌生 我一直在尝试设置一个具有 2 个独立队列的项目 一个用于计算 另一个用于执行 到目前为止 一切都很好 我的问题是执行队列中的工作人员需要实例化一个具有唯一 object id 的类 每个工作人员一个 id 我想知
  • Seaborn Pairplot 图例不显示颜色

    我一直在学习如何在Python中使用seaborn和pairplot 这里的一切似乎都工作正常 但由于某种原因 图例不会显示相关的颜色 我无法找到解决方案 因此如果有人有任何建议 请告诉我 x sns pairplot stats2 hue
  • 将 JSON 对象传递给带有请求的 url

    所以 我想利用 Kenneth 的优秀请求模块 https github com kennethreitz requests 在尝试使用时偶然发现了这个问题自由库API http wiki freebase com wiki API 基本上
  • 在 pytube3 中获取 youtube 视频的标题?

    我正在尝试构建一个应用程序来使用 python 下载 YouTube 视频pytube3 但我无法检索视频的标题 这是我的代码 from pytube import YouTube yt YouTube link print yt titl
  • 在 Pandas 中使用正则表达式的多种模式

    我是Python编程的初学者 我正在探索正则表达式 我正在尝试从 描述 列中提取一个单词 数据库名称 我无法给出多个正则表达式模式 请参阅下面的描述和代码 描述 Summary AD1 Low free DATA space in data
  • 如何在 OSX 上安装 numpy 和 scipy?

    我是 Mac 新手 请耐心等待 我现在使用的是雪豹 10 6 4 我想安装numpy和scipy 所以我从他们的官方网站下载了python2 6 numpy和scipy dmg文件 但是 我在导入 numpy 时遇到问题 Library F
  • Tkinter - 浮动窗口 - 调整大小

    灵感来自this https stackoverflow com a 22424245 13629335问题 我想为我的根窗口编写自己的调整大小函数 但我刚刚注意到我的代码显示了一些性能问题 如果你快速调整它的大小 你会发现窗口没有像我希望
  • 如何为每个屏幕添加自己的 .py 和 .kv 文件?

    我想为每个屏幕都有一个单独的 py 和 kv 文件 应通过 main py main kv 中的 ScreenManager 选择屏幕 设计应从文件 screen X kv 加载 类等应从文件 screen X py 加载 Screens
  • Ubuntu 上的 Python 2.7

    我是 Python 新手 正在 Linux 机器 Ubuntu 10 10 上工作 它正在运行 python 2 6 但我想运行 2 7 因为它有我想使用的功能 有人敦促我不要安装 2 7 并将其设置为我的默认 python 我的问题是 如
  • 限制 django 应用程序模型中的单个记录?

    我想使用模型来保存 django 应用程序的系统设置 因此 我想限制该模型 使其只能有一条记录 极限怎么办 尝试这个 class MyModel models Model onefield models CharField The fiel
  • 在Python中按属性获取对象列表中的索引

    我有具有属性 id 的对象列表 我想找到具有特定 id 的对象的索引 我写了这样的东西 index 1 for i in range len my list if my list i id specific id index i break
  • Elastic Beanstalk 中的 enum34 问题

    我正在尝试在 Elastic Beanstalk 中设置 django 环境 当我尝试通过requirements txt 文件安装时 我遇到了python3 6 问题 File opt python run venv bin pip li
  • 您可以使用关键字参数而不提供默认值吗?

    我习惯于在 Python 中使用这样的函数 方法定义 def my function arg1 None arg2 default do stuff here 如果我不供应arg1 or arg2 那么默认值None or default

随机推荐

  • 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