Python系统学习1-6-元组

news2024/10/6 10:31:38

】目录

一、列表与字符串转换

二、列表推导式

三、元组

1、元组基本操作 

2、元组和列表的内存图

 四、容器思想

homework


一、列表与字符串转换

(1) 列表转换为字符串:

result = "连接符".join(列表)

# 根据xx条件,循环拼接字符串
# 需求 range(10) 0123456789
# str_result = ""
# for item in range(10):
#     str_result += str(item)
#     # ""+"0"
#     # "0"+"1"
#     # "01"+"2"
#     # 缺点:每次循环相加时,都会产生新数据,替换旧数据
# print(str_result)

# 解决:利用可变数据代替不可变数据
#            列表        字符串
str_result = []
for item in range(10):
    str_result.append(str(item))
result = "".join(str_result)
print(result)

(2) 字符串转换为列表:

列表 = “a-b-c-d”.split(“分隔符”)

# 使用一个字符串存储多个信息
list_result = " 唐僧 , 孙悟空 , 八戒 " . split ( "," )
print ( list_result )

练习:

str_context = "I love you" # 将字符串翻转输出
str_list = str_context.split(" ")
str_list_ok = str_list[::-1]
print(" ".join(str_list_ok))

 二、列表推导式

(1) 定义:

使用简易方法,将可迭代对象转换为列表。

(2) 语法:

变量 = [表达式 for 变量 in 可迭代对象]

变量 = [表达式 for 变量 in 可迭代对象 if 条件]

(3) 说明:

如果条件不满足,则可迭代对象的元素将被丢弃。

# 练习一
# 生成10--30之间能被3或者5整除的数字
# 结果:[10, 12, 15, 18, 20, 21, 24, 25, 27]
list_result01 = []
for item in range(10,31):
    if item % 3 ==0 or item % 5 == 0:
        list_result01.append(item)
print(list_result01)
list_result02 = [item for item in range(10,31) if item % 3 ==0 or item % 5 == 0]
print(list_result02)

# 练习二
# 生成5 -- 20之间的数字平方
# 结果:[25, 36, 49, 64, 81, 100, 121, 144, 169, 196, 225, 256, 289, 324, 361]
list_result03 = [item ** 2 for item in range(5,21)]
print(list_result03)

三、元组

列表:由一系列变量组成的可变序列容器

元组:由一系列变量组成的不可变序列容器。

1、元组基本操作
   创建
   添加  不可变,没有
   定位
   删除  不可变,没有
   遍历
## 创建,列表放元组里,节省内存

tuple_01 =("dd","ee","ff")
list_01 = ["理理","红红"]
tuple_02 = tuple(list_01)

## 定位

# 寻找第二个元素
print(tuple_01[1])
# 前两个
print(tuple_01[:2])

## 遍历

for item in tuple_01:
    print(item)

## 在构建元组的时候,在没有歧义的情况下,可以省略小括号

tuple_03 = 10,20,30
print(tuple_03)

## 元组中如果只有一个元素,必须添加逗号

tuple_04 = ("李琦")
print(tuple_04)   # 不是元组
tuple_05 = ("李琦",)
print(tuple_05)   # 是元组

## 特别小心,下列代码是元组,不是字符串,因为有逗号

name = 10,
print(name)  # 变为元组

## 序列可拆包(字符串,列表,元组)

tuple_01 =("dd","ee","ff")
a,b,c = tuple_01
print(a,b,c)
list_01 = ["理理","红红"]
a,b=list_01
print(a,b)
a,b,c="孙悟空"
print(a,b,c)

# 变量交换
a = 10
b = 20
a,b=b,a  # 变量交换的实质是元组省略小括号

2、元组和列表的内存图

列表:预留空间,自动扩容

元组:按需分配,之后不可变

 练习:

我自己画图:

 四、容器思想

练习1:

"""
练习:
    在终端中输入月份,打印相应的天数.
    1 3 5 7 8 10 12 有 31天
    2 有 29天
    4 6 9 11 有 30天
    超过月份提示月份有误
    效果:
    请输入月份:10
    31天
"""
month = int(input("请输入月份:"))
if 0 < month <= 12:
    if month == 2:
        print("28天")
    elif month == 4 or month == 6 or month == 9 or month==11:
        print("30天")
    else:
        print("31天")
else:
    print("月份输入有误")

# 优化1
month = int(input("请输入月份:"))
if 0 < month <= 12:
    if month == 2:
        print("28天")
    elif month in (4 ,6 ,9 ,11):
        print("30天")
    else:
        print("31天")
else:
    print("月份输入有误")

# 优化2
tuple_month = (31,29,31,30,31,30,31,31,30,31,30,31)
month = int(input("请输入月份:"))
print(tuple_month[month-1])

 练习2:

# 练习2:
# 根据月日,计算是这一年的第几天.
# 公式:前几个月总天数 + 当月天数
# 例如:5月10日
# 计算:31 29 31 30 + 10

tuple_month = (31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31)
month = int(input("请输入月:"))
date= int(input("请输入日:"))
total_day = 0
for i in range(month-1):
    total_day += int(tuple_month[i])
print(total_day+date)

# 使用tuple_month[:2] 会触发浅拷贝

# 优化
total_day = sum(tuple_month[:month-1],date)
print(total_day)

homework

"""
    画出下列代码内存图
"""
list01 = [10, 20, 30]
for item in list01:
    item += 1
print(list01)  # ?

list02 = [
    [10],
    [20],
    [30],
]
for item in list02:
    item[0] += 1
print(list02)  # ?

我画的图:

 

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

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

相关文章

指针---进阶篇(二)

指针---进阶篇&#xff08;二&#xff09; 前言一、函数指针1.抛砖引玉2.如何判断函数指针&#xff1f;&#xff08;方法总结&#xff09; 二、函数指针数组1.什么是函数指针数组&#xff1f;2.讲解函数指针数组3.模拟计算器&#xff1a;讲解函数指针数组 三、指向函数指针数组…

8年测试整理,接口测试-测试点分析与搜索查询测试点(超细汇总)

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

Redux - Redux在React函数式组件中的基本使用

文章目录 一&#xff0c;简介二&#xff0c;安装三&#xff0c;三大核心概念Store、Action、Reducer3.1 Store3.2 Reducer3.3 Action 四&#xff0c;开始函数式组件中使用4.1&#xff0c;引入store4.1&#xff0c;store.getState()方法4.3&#xff0c;store.dispatch()方法4.4&…

10年软件测试行业经验教你如何写简历【绝对靠谱】

前言 作为软件测试的从业者&#xff0c;面试或者被面试都是常有的事。 可是不管怎样&#xff0c;和简历有着理不清的关系&#xff0c;面试官要通过简历了解面试者的基本信息、过往经历等。 面试者希望通过简历把自己最好的一面体现给面试官&#xff0c;所以在这场博弈中&…

若依vue -【 100 ~ 更 ~ 110 】

100 主子表代码生成详解 1 新建数据库表结构&#xff08;主子表&#xff09; -- ---------------------------- -- 客户表 -- ---------------------------- drop table if exists sys_customer; create table sys_customer (customer_id bigint(20) not null…

母猪产仔早知道,这次南农用上了英伟达边缘 AI Jetson

内容一览&#xff1a;对养猪业而言&#xff0c;母猪产仔是其中关键的一环。因此&#xff0c;提高猪仔成活率、确保母猪分娩过程安全&#xff0c;成为重要课题。现有的 AI 监测方式&#xff0c;存在着高设备成本与信息传输不稳定的问题&#xff0c;南京农业大学研究人员&#xf…

Kali Hyper-V安装正常启动后 黑屏 只能进命令模式

问题: Hyper-V安装虚拟机Kali系统一切安装正常, 没有出现错误. 安装成功后重启,只能进入命令模式,tt1-tt6,进不去GUI桌面. 尝试: 一代二代虚拟硬盘都试过,同样问题,只能开进后进入命令模式,在命令模式下一切运行正常, 也修复过系统 GNOM等的,不管用. 以下为国外论坛给的建议,尝…

Qt 文件对话框使用 Deepin风格

当你在Deepin或UOS 上开发 Qt 程序时&#xff0c;如果涉及到文件对话框功能&#xff0c;那么就会遇到调用原生窗口的问题。 如果你使用的是官方的Qt版本&#xff0c;那么在Deepin或者UOS系统上&#xff0c;弹出的文件对话框会是如下这样&#xff1a; 而Deepin或UOS系统提供的默…

【AI理论学习】手把手推导扩散模型:Diffusion Models(DDPM)

手把手推导扩散模型&#xff1a;Diffusion Models&#xff08;DDPM&#xff09; DDPM理论回顾前置知识过程详解Forward ProcessReverse Process DDPM算法伪代码训练部分采样部分 总结一下 参考链接 在这篇博客文章中&#xff0c;我们将深入研究 去噪扩散概率模型(也称为 DDPM&…

利用Simulink Test进行模型单元测试 - 1

1.搭建用于测试的简单模型 随手搭建了一个demo模型MilTestModel&#xff0c;模型中不带参数 2.创建测试框架 1.模型空白处右击 测试框架 > 为‘MilTestModel’创建 菜单 2.在创建测试框架对话框中&#xff0c;点击OK&#xff0c;对应的测试框架MilTestMode_Harness1就自动…

js玩儿爬虫

前言 提到爬虫可能大多都会想到python&#xff0c;其实爬虫的实现并不限制任何语言。 下面我们就使用js来实现&#xff0c;后端为express&#xff0c;前端为vue3。 实现功能 话不多说&#xff0c;先看结果&#xff1a; 这是项目链接&#xff1a;https://gitee.com/xi1213/w…

时间复杂度与空间复杂度的详解

目录 1.时间复杂度 2.时间复杂度计算例题 3.空间复杂度 1.时间复杂度 算法中的基本操作的执行次数&#xff0c;为算法的时间复杂度。 如何表达 时间复杂度&#xff1f; 大O的渐进表示法 实际中我们计算时间复杂度时&#xff0c;我们其实并不一定要计算精确的执行次数&#xf…

105. 从前序与中序遍历序列构造二叉树

题目描述 给定两个整数数组 preorder 和 inorder &#xff0c;其中 preorder 是二叉树的先序遍历&#xff0c; inorder 是同一棵树的中序遍历&#xff0c;请构造二叉树并返回其根节点。 示例 1: 输入: preorder [3,9,20,15,7], inorder [9,3,15,20,7] 输出: [3,9,20,null,n…

【高频面试题】多线程篇

文章目录 一、线程的基础知识1.线程与进程的区别2.并行和并发有什么区别&#xff1f;3.创建线程的方式有哪些&#xff1f;3.1.Runnable 和 Callable 有什么区别&#xff1f;3.2.run()和 start()有什么区别&#xff1f; 4.线程包括哪些状态&#xff0c;状态之间是如何变化的4.1.…

一文详述流媒体传输网络MediaUni

一张「多元融合」的网络。 黄海宇&#xff5c;演讲者 大家好&#xff0c;我是阿里云视频云的黄海宇&#xff0c;今天分享主题是MediaUni——面向未来的流媒体传输网络设计与实践。 下面我将会从应用对流媒体传输网络的要求、MediaUni定位与系统架构、MediaUni技术剖析、基于Me…

vr虚拟仿真消防模拟演练提升受训者的安全观念和防范技能

纵观多年来的火灾事故教训得知&#xff0c;火灾发生的原因复杂多样&#xff0c;仅采取单一教育形式无法达到预期效果。消防安全重在预防&#xff0c;VR消防模拟演练系统将火灾安全问题&#xff0c;经采集和汇集处理&#xff0c;以可视化的形式在安全培训平台上进行实时展现&…

微服务与Nacos概述-3

流量治理 在微服务架构中将业务拆分成一个个的服务&#xff0c;服务与服务之间可以相互调用&#xff0c;但是由于网络原因或者自身的原因&#xff0c;服务并不能保证服务的100%可用&#xff0c;如果单个服务出现问题&#xff0c;调用这个服务就会出现网络延迟&#xff0c;此时…

基于STM32 FOC下桥三电阻采样方式的电机相电流重构方法

文章目录 1、本文中的PWM生成模式2、 注意事项3、与SVPWM相关的问题4、采样点的选择4.1、在低调制系数时&#xff08;1&#xff09;4.2、在高调制系数时&#xff08;2&#xff09;4.3、在高调制系数时&#xff08;3&#xff09;4.4、在高调制系数时&#xff08;4&#xff09; 5…

Oracle 使用 CONNECT_BY_ROOT 解锁层次结构洞察:在 SQL 中导航数据关系

CONNECT_BY_ROOT 是一个在 Oracle 数据库中使用的特殊函数&#xff0c;它通常用于在层次查询中获取根节点的值。在使用 CONNECT BY 子句进行层次查询时&#xff0c;通过 CONNECT_BY_ROOT 函数&#xff0c;你可以在每一行中获取根节点的值&#xff0c;而不仅仅是当前行的值。 假…

Window下安装MinGW64

欢迎来到我的酒馆 介绍Windows下&#xff0c;安装MinGW64。 目录 欢迎来到我的酒馆二.MinGW64三.配置系统环境变量 二.MinGW64 从sourceforge下载mingw64&#xff0c; sourceforge下载MinGW https://sourceforge.net/projects/mingw-w64/files/mingw-w64/mingw-w64-release/ 下…