Python系统学习1-5-容器

这篇具有很好参考价值的文章主要介绍了Python系统学习1-5-容器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1、字符串

字符串字面值

转义字符:改变原有含义的特殊字符

格式化字符串

注意f-string使用

2、序列

编码

3、通用操作

1、数学运算符

2、成员运算符

3、索引

4、切片

4、列表

(1)创建

(2)添加(追加和插入)

(3)定位元素,利用索引或者切片

(4)删除元素:根据位置或根据元素值

(5)遍历列表元素,全部遍历或者根据条件遍历

(6)列表:内存分配

  在列表添加时,append直接将元素添加在末尾,insert则需将该位置及之后的数据地址后移,再放现在数据的地址。

在列表删除时,del和remove都需要将后面元素进行前移。

在列表遍历时,注意for item in 列表 和 for i in range(len(列表))

 画图homework

homework1

homework2


1、字符串

字符串是不可变的数据

原因:如果在原有内存中修改,很可能破坏其他数据的空间

现象:每次需要修改字符串时,都会创建新数据,替换变量中存储的地址

字符串字面值

(1)建议使用双引号

name01 = "悟空"

(2)冲突后使用单引号

name02 = '悟空'

(3)三引号,所见皆所得包括三单和三双,

print("""三 单 引号""")

转义字符:改变原有含义的特殊字符
print("我是\"花果山\"悟空")
print("我是\n花果山")
# 当引号中是文件位置时
# print("E:\aonth01\bay04-8月5日")
# 或者 双斜杠
print("E:\\aonth01\\bay04-8月5日")
#或者 加r,代表原始字符
print(r"E:\aonth01\bay04-8月5日")
格式化字符串
适用性:在字符串中插入变量
语法:字符串%(变量)
占位符:%s s代表str,原样输出
       %.1f  保留一个小数,支持四舍五入
       %.2d  保留两位整数,不足两位时,左侧用零填充
print("%.1f" % 1.29456) ¥ 1.2
# 不足两位时,左侧用零填充
print("%.2d:%.2d" % (9,5)) # 09:05

注意f-string使用

Python3.6及之后,可以使用f-string进行字符串格式控制。

f-string用大括{ }表示被替换字段,其中直接填入替换内容即可。

>>> name = "Huang Wei"
>>> f"Hello, my name is {name}"
#   'Hello, my name is Huang Wei'

f-string宽度与精度相关格式描述符:保留小数点位数
① 语法格式如下
Python系统学习1-5-容器,学习

>>> a = 123.456
# 只指定width
>>> f"{a:10}"
'   123.456'
# 只指定0width
>>> f"{a:010}"
'000123.456'
# 使用width.precision
>>> f"{a:8.1f}"
'   123.5'
>>> f"{a:8.2f}"
'  123.46'
>>> f"{a:.2f}"
'123.46'
# 在width后面,直接加f,表示补足小数点后的位数至默认精度6
>>> f"{a:2f}"
'123.456000'

2、序列

序列:由一系列字符组成的不可变序列容器,存储的是字符的编码值

字节:计算机存储的最小单位,等于8位bit,最大为十进制255。

字符:单个的数字,文字,符号

字符集:存储字符与二进制序列的对应关系(编码与解码,ASCII编码)

编码

Python系统学习1-5-容器,学习

 ASCII编码:有100多字符,8个比特位最多可以表示255个字符,所以每个字符1个字节。

GBK编码:21003个中文,需要15个比特位全部表示,由于计算机中存储是以8个比特位为间隔,所以需要1个中文需要2个字节

Python系统学习1-5-容器,学习

一般情况下使用UTF-8编码。

3、通用操作

1、数学运算符

+ 拼接
* 重复
> < >= <= == 比较运算,比较编码值,依次比较两个容器中元素,一旦不同则返回比较结果

print("悟空"+"猴子")
print("悟空" * 3)
print("悟空" > "八戒")
print("12w" == "16w")  # 单位一致,进行比较
print('12W' == "1200000")  # 单位不一致,结果错误
2、成员运算符

in,not in 判断元素是否在容器中

print("悟空" in "孙悟空")

编程练习:

"""
# 请输入整数:8
$$$$$$$$
$ $
$ $
$ $
$ $
$ $
$ $
$$$$$$$$
"""
# num = int(input("请输入数字:"))
# print("$"*num)
# for i in range(1,num-2):
#     print("$"+" "*(num-2)+"$")
# print("$"*num)

# 优化
# """
num = int(input("请输入数字:"))
for i in range(num):
    if i == 0 or i==num-1:
        print("$" * num)
    else:
     print("$"+" "*(num-2)+"$")
3、索引

索引
定位单个元素,编号为0到len()-1
容器[整数]

正向索引
反向索引 len()-1等价于-1
         0  等价于 -len()

4、切片

切片,越界不报错
定位多个元素
容器名[开始:结束:[间隔]],不包括结尾,间隔默认为1,可省略
容器名[开始:结束]
容器名[:结束],开始可以不写,默认为1,但冒号不能省略
容器名[:],开始和结束都可以不写,结束默认为尾,默认包括所有元素
容器名[-3:],倒数3个字符

4、列表

定义:使用一个变量,管理多个数据,擅长于处理单一维度数据

(1)创建
#  列表名 = [数据1,数据2]
list_name = ["王丽","王红","丽红"]
# 列表名= list(容器)
list_lq = list("王丽")  # 相当于类型转换
(2)添加(追加和插入)
## 添加
# 追加,只能放在末尾:列表名.append(数据)
list_name.append("李红")
# 插入:列表名.insert(位置,数据),前面的数据往后移动
(3)定位元素,利用索引或者切片
list_name = ["王丽","王红","丽红"]
# 读取单个元素
print(list_name[0])
# 修改单个元素
list_name[0] = "王丽丽"
# 读取多个元素
# 通过切片读取的原理会创建新容器
print(list_name[-2:])
# 修改多个元素
# 通过切片修改的原理会将右侧容器元素依次存入左侧
list_name[-2:] = ["ww","ll"]
print(list_name)
(4)删除元素:根据位置或根据元素值
list_name = ["王丽","王红","丽红"]
## 删除
# 根据定位删除:del 容器名[索引或切片],后面的数据往前移动
del list_name[1]
print(list_name)
del list_name[0:1]
print(list_name)
# 根据元素删除
# 如果不知道是否存在,先判断
# list_name.remove("丽丽") # 报错
if "理理" in list_name:
    list_name.remove("丽丽")
(5)遍历列表元素,全部遍历或者根据条件遍历
list_name = ["王丽丽","王红","丽红"]
# 打印所有姓名是2个字的元素
for item in list_name:
    if len(item) == 2:
        print(item)
# 将所有姓名是2个字的元素改为空字符串
# for item in list_name:  错误
#     if len(item) == 2:
#         item = ""  # 修改的是变量item,与列表无关
# print(list_name)  

for i in range(len(list_name)):
    if len(list_name[i]) == 2:
        list_name[i] = ""
print(list_name)
(6)列表:内存分配
list_name = ["李琦","周义杰","毛绍祺"]
# 列表一份
data01 = list_name
data02 = list_name[0]
# 切片会重新创建,列表二份
data03 = list_name[-2:]
# 因为是两个列表,所以互不影响
data03[0] = "义杰"
# 因为一份,所以互相影响
data01[0] = "琪琪"
print(list_name)

画图举例1:

Python系统学习1-5-容器,学习

 画图举例2:

Python系统学习1-5-容器,学习

自己画图: 

 Python系统学习1-5-容器,学习

  在列表添加时,append直接将元素添加在末尾,insert则需将该位置及之后的数据地址后移,再放现在数据的地址。

Python系统学习1-5-容器,学习

在列表删除时,del和remove都需要将后面元素进行前移。

Python系统学习1-5-容器,学习

在列表遍历时,注意for item in 列表 和 for i in range(len(列表))

Python系统学习1-5-容器,学习

Python系统学习1-5-容器,学习

Python系统学习1-5-容器,学习

5、列表的深拷贝与浅拷贝

深浅拷贝
    拷贝:复制/备份的过程,防止数据意外破坏
    浅拷贝:复制第一层数据,共享深层数据
        优点:占用内存较小
        缺点:当深层数据被修改时,互相影响
        适用性:优先
    深拷贝:复制所有层数据
        优点:绝对互不影响
        缺点:占用内存较大
        适用性:深层数据会被修改
list_name = ["李琪", ["周义杰", "毛绍祺"]]
data01 = list_name[:]  # 触发浅拷贝
data01[0] = "琪琪"  # 修改第一层(2份),互不影响
data01[1][0] = "义杰"  # 修改深层(1份),互相影响
print(list_name)

# 准备深拷贝工具
import copy

list_name = ["李琪", ["周义杰", "毛绍祺"]]
data01 = copy.deepcopy(list_name)# 执行深拷贝
data01[0] = "琪琪"  # 修改第一层(2份),互不影响
data01[1][0] = "义杰"  # 修改深层(2份),互不影响
print(list_name)

 Python系统学习1-5-容器,学习

 Python系统学习1-5-容器,学习

 画图homework

此处:list02=list01,属于赋值,传递列表地址,不属于拷贝

"""
    画出下列代码内存图
"""
import copy

list01 = ["北京", ["上海", "深圳"]]
# 赋值:传递列表地址(1份)
list02 = list01
# 浅拷贝:复制第一层(2份),共享深层(1份)
list03 = list01[:]
# 深拷贝:复制所有层(2份)
list04 = copy.deepcopy(list01)
# 互不影响
list04[0] = "北京04"
list04[1][1] = "深圳04"
print(list01)  # ?
# 互相影响
list02[0] = "北京02"
list02[1][1] = "深圳02"
print(list01)  # ?
# 修改第一层,互不影响
list03[0] = "北京03"
# 修改深层,互相影响
list03[1][0] = "上海03"
print(list01)  # ?

Python系统学习1-5-容器,学习文章来源地址https://www.toymoban.com/news/detail-634909.html

homework1

# 4. 赌大小游戏
#     # 准备随机数工具
#     import random
#
#     number1 = random.randint(1,6)
#     number2 = random.randint(1,6)
#     玩家的身家初始10000,实现下列效果:
#         少侠请下注: 30000
#         超出了你的身家,请重新投注。
#         少侠请下注: 8000
#         你摇出了5点,庄家摇出了3点
#         恭喜啦,你赢了,继续赌下去早晚会输光的,身家还剩18000
#         少侠请下注: 18000
#         你摇出了6点,庄家摇出了6点
#         打平了,少侠,在来一局?
#         少侠请下注: 18000
#         你摇出了4点,庄家摇出了6点
#         少侠,你输了,身家还剩 0
#         哈哈哈,少侠你已经破产,无资格进行游戏
import random
start_energy = 10000
while start_energy > 0:
    test_energy = int(input("少侠请下注:"))
    if test_energy > start_energy:
        print("超出了你的身家,请重新投注。")
        # continue
    else:  # 上一行的continue和此行的else只需要一个,最好用continue
        number1 = random.randint(1, 6)
        number2 = random.randint(1, 6)
        print("你摇出了%d点,庄家摇出了%d点" % (number1,number2))
        if number1 > number2:
            start_energy += test_energy
            print("恭喜啦,你赢了,继续赌下去早晚会输光的,身家还剩%d" % start_energy)
        elif number1 < number2:
            start_energy -= test_energy
            print("少侠,你输了,身家还剩 %d" %start_energy)
        else:
            print("打平了,少侠,再来一局?")
    if start_energy == 0:
        print("哈哈哈,少侠你已经破产,无资格进行游戏")

homework2

"""
5. (选做)一个小球从100m高度落下,每次弹回原高度一半.
   计算:
    -- 总共弹起多少次?(最小弹起高度0.01m)
    -- 全过程总共移动多少米?
   提示:
       数据/算法
"""
# height = 100
# count = 0
# distance_sum = 0
# while height > 0.01:  错误
# while height/2 > 0.01: # 这里的0.01是弹起的高度,所以这里判断也应该使用弹起的方式
#     distance_sum += height + height/2
#     print(height + height/2)
#     height /= 2
#     count +=1
# print(distance_sum)
# print(count)

# 优化
height = 100
count = 0
distance_sum = height
while height/2 > 0.01: # 这里的0.01是弹起的高度,所以这里判断也应该使用弹起的方式
    distance_sum += height/2 *2 # 累加起/落距离
    height /= 2
    count += 1
print(f"全过程总共移动{distance_sum:.2f}米")
print(f"弹跳次数为:{count}")

到了这里,关于Python系统学习1-5-容器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何系统地学习Python

    建议系统学习Python的途径遵循理论与实践相结合的教学方法。以下是一个分阶段的学习计划: 阶段一:基础知识 理解Python的特点 : 认识Python的历史与设计哲学。 学习Python的基本语法和运行环境。 安装Python : 学习如何在不同操作系统上安装Python及环境配置。 基础语法和概

    2024年02月20日
    浏览(32)
  • Python:学习成绩管理系统

    目录 前言 一、需求分析 1、概念设计 2、流程图设计 3、主界面设计 二、功能实现 1、主函数定义 2、录入学生信息 (1)功能实现 (2)输出界面 ​3、删除学生信息 (1)功能实现 (2)输出界面 4、修改学生信息 (1)功能实现 (2)输出界面 5、查找学生信息 (1)功能实现

    2024年02月01日
    浏览(30)
  • Python系统学习1-7-字典

    目录 一、字典 1、概念及内存图 2、基本操作 (1)创建 (2)添加 (3)删除 (4)遍历 3、列表list和字典dict互相转换 4、练习 二、容器小结 1、种类与特征 2、Python语言有哪些数据类型 3、序列与散列 4、语法 三、练习1 一、字典 1、概念及内存图 列表 :由一系列 变量 组成的

    2024年02月13日
    浏览(23)
  • Python系统学习1-9-类(一)

    一、类之初印象 1、类就是空表格,将变量(列名)和函数(行为)结合起来 2、创建对象,表达具体行 3、创建类就是创建数据的模板         --操作数据时有提示         --还能再组合数据的行为         --结构更加清晰 4、类的内存分配  5、练习  二、类语法 (1)类定

    2024年02月12日
    浏览(26)
  • python系统学习Day3

    python函数的参数共有五种类型 参数定义的顺序必须是:必选参数, 默认参数, 可变参数, 命名参数, 参数 理解起来有两种分类方式:普通参照位置的参数/、 / 参数, 固定个数的参数 / 可变参数。 位置参照在前,固定个数在前。 部分类型可指定默认值

    2024年02月19日
    浏览(36)
  • 如何系统性的学习Python语言

    零基础同学的福音来了,如果你对Python语言的学习感兴趣,接下来可以由浅入深的了解下Python语言,哪怕你是零基础的小白也完全可以学会的,最后也会给大家放出学习和实例相结合的教程及方法,给到各位同学系统性的教学,最重要的是免费,可真谓是学生党们的福音呀。

    2024年02月10日
    浏览(41)
  • python基于深度学习的水果识别系统

    具体实现分为以下几个步骤: 数据集准备:从互联网上采集水果图片,并将其划分成训练集、验证集和测试集,以便用来训练和测试模型。 模型构建:使用 PyTorch 来构建深度学习模型,常用的有 AlexNet、VGG、ResNet 等。根据实验情况,可以选择不同的模型。 训练模型:使用准

    2024年02月07日
    浏览(32)
  • Python系统学习1-9-类一之类语法

    一、类之初印象 1、类就是空表格,将变量(列名)和函数(行为)结合起来 2、创建对象,表达具体行 3、创建类就是创建数据的模板         --操作数据时有提示         --还能再组合数据的行为         --结构更加清晰 4、类的内存分配  5、练习  二、类语法 (1)类定

    2024年02月12日
    浏览(50)
  • python毕设选题 - opencv python 深度学习垃圾图像分类系统

    🔥 这两年开始毕业设计和毕业答辩的要求和难度不断提升,传统的毕设题目缺少创新和亮点,往往达不到毕业答辩的要求,这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。 为了大家能够顺利以及最少的精力通过毕设,学长分享优质毕业设计项目,今天

    2024年02月02日
    浏览(43)
  • 机器视觉毕业设计 python车牌识别系统 - opencv 深度学习 机器学习

    # 1 前言 🚩 基于python 机器视觉 的车牌识别系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分 工作量:3分 创新点:2分 车牌识别其实是个经典的机器视觉任务了,通过图像处理技术检测、定位、识别车牌上的字符,实现计算机对车牌的智能管理功能。如今在

    2024年02月13日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包