【Python】进制、计算机中的单位、编码、数据类型、索引、字符串切片、字符串的功能方法

news2024/11/15 15:35:57

一、进制

计算机中底层所有的数据都是以 010101 的形式存在(图片、文本、视频等)。

  • 二进制

  • 八进制

  • 十进制(也就是我们熟知的阿拉伯数字)

  • 十六进制

进制转换

v1 = bin(25) # 十进制转换为二进制
print(v1) # "0b11001"

v2 = oct(23) # 十进制转换为八进制
print(v2) # "0o27"

v3 = hex(28) # 十进制转换为十六进制
print(v3) # "0x1c"
i1 = int("0b11001", base=2)
print(i1)
i2 = int("0o27", base=8)  #
print(i2)
i3 = int("0x1c", base=16)
print(i3)
base代表着参照的进制 ,base>=2,(base也可取0,此时和base取10一样) 比如int ('20',8),代表的就是八进制的‘20’

二、计算机中的单位

由于计算机中本质上所有的东西以为二进制存储和操作的,为了方便对于二进制值大小的表示,所以就搞了一些单位。

  • b(bit),位

1,1位
10,2位
111,3位
1001,4位

  • B(byte),字节

8位是一个字节。
10010110,1个字节
10010110 10010110,2个字节
  • KB(kilobyte),千字节

1024个字节就是1个千字节。
10010110 11010110 10010111 .. ,1KB
1KB = 1024B= 1024 * 8 b
  • M(Megabyte),兆

1024KB就是1M
1M= 1024KB = 1024 * 1024 B = 1024 * 1024 * 8 b
  • G(Gigabyte),千兆

1024M就是1G
1 G= 1024 M= 1024 *1024KB = 1024 * 1024 * 1024 B = 1024 *
1024 * 1024 * 8 b
  • T(Terabyte),万亿字节

1024个G就是1T
  • ...其他更大单位 PB/EB/ZB/YB/BB/NB/DB 不再赘述。

单位的转换

1 B(字节)= 8bit(比特位)
1 KB(千字节) = 1024 B(字节)
1 M(兆字节) = 1024KB(千字节)
1 G = 1024M 
1 T = 1024G 

三、编码

基本概念:

字符(Character)

在电脑和电信领域中,字符是一个信息单位,它是各种文字和符号的总称,包括各国家文字、标点符 号、图形符号、数字等。比如,一个汉字,一个英文字母,一个标点符号等都是一个字符。

字符集(Character set)

字符集是字符的集合。字符集的种类较多,每个字符集包含的字符个数也不同。比如,常见的字符集有ASCII 字符集、GB2312 字符集、Unicode 字符集等,其中,ASCII 字符集共有 128 个字符,包 含可显示字符(比如英文大小写字符、阿拉伯数字)和控制字符(比如空格键、回车键);GB2312 字 符集是中国国家标准的简体中文字符集,包含简化汉字、一般符号、数字等;Unicode 字符集则包含 了世界各国语言中使用到的所有字符

字符编码(Character encoding)

字符编码,是指对于字符集中的字符,将其编码为特定的二进制数,以便计算机处理。常见的字符编码 有 ASCII 编码,UTF-8 编码,GBK 编码等。一般而言,字符集和字符编码往往被认为是同义的概 念,比如,对于字符集 ASCII,它除了有「字符的集合」这层含义外,同时也包含了「编码」的含 义,也就是说,ASCII 既表示了字符集也表示了对应的字符编码。


总结:

Python相关的编码

v1 = "吕"
# 声明此字符串通过utf-8进行编码 utf-8常用汉字使用三个字节编码
v2 = "吕".encode("utf-8")
# 声明此此字符串通过gbk进行编码  gbk常用汉字使用两个字节编码
v3 = "吕".encode("gbk")

# 如果输出不进行解码,则输出对应编码的字符
print(v2)
print(v3)
# 只有通过对对应的字符编码过的字符进行同类型编码格式解码后,才可以看到原始字符串
print(v2.decode("utf-8"))
print(v3.decode("gbk"))
# 如果使用跟编码不同的类型编码方式进行解码的话,就会报错提示
# UnicodeDecodeError: 'gbk' codec can't decode byte 0x95 in position 2: incomplete multibyte sequence
v2 = "吕".encode("utf-8")
print(v2.decode("gbk"))

本章的知识点属于理解为主,了解这些基础之后有利于后面知识点的学习,接下来对

本节所有的知识点进行归纳总结:

  1. 计算机上所有的东西最终都会转换成为二进制再去运行。

  1. ascii编码、unicode字符集、utf-8编码本质上都是字符与二进制的关系。

  1. ascii,字符和二进制的对照表。

  1. unicode,字符和二进制(码位)的对照表。

  1. utf-8,对unicode字符集的码位进行压缩处理,间接也维护了字符和二进制的对照表。

  1. ucs2和ucs4指的是使用多少个字节来表示unicode字符集的码位。

  1. 目前最广泛的编码为:utf-8,他可以表示所有的字符且存储或网络传输也不会浪费资源(对码位进行压缩了)。

  1. 二进制、八进制、十进制、十六进制其实就是进位的时机不同。

  1. 基于Python实现二进制、八进制、十进制、十六进制之间的转换。

  1. 一个字节8位

  1. 计算机中常见单位b/B/KB/M/G的关系。

  1. 汉字,用gbk编码需要用2个字节;用utf-8编码需要用3个字节。

  1. 基于Python实现将字符串转换为字节(utf-8编码)

# 字符串类型
name = "小胖"
print(name) # 小胖
# 字符串转换为字节类型
data = name.encode("utf-8")
print(data) # b'\xe6\xad\xa6\xe6\xb2\x9b\xe9\xbd\x90'
# 把字节转换为字符串
old = data.decode("utf-8")
print(old)
  1. 基于Python实现将字符串转换为字节(gbk编码)

# 字符串类型
name = "小胖"
print(name) # 小胖
# 字符串转换为字节类型
data = name.encode("gbk")
# print(data) # b'\xe6\xad\xa6\xe6\xb2\x9b\xe9\xbd\x90'
utf8,中文3个字节
print(data) # b'\xce\xe4\xc5\xe6\xc6\xeb' gbk,中
文2个字节
# 把字节转换为字符串
old = data.decode("gbk")
print(old)

四、数据类型(上)

接下来的课程都是来讲解数据类型的知识点,常见的数据类型:

  • int,整数类型(整形)

  • bool,布尔类型

  • str,字符串类型

  • list,列表类型

  • tuple,元组类型

  • dict,字典类型

  • set,集合类型

  • float,浮点类型(浮点型)


长整型

Python3:整型(无限制)

Python2:整型、长整形

在python2中跟整数相关的数据类型有两种:int(型)、long(长整型),他们都是整数只不过能表示的值范围不同。

int,可表示的范围:-9223372036854775808~9223372036854775807
long,整数值超出int范围之后自动会转换为long类型(无限制).
在python3中去除了long只剩下:int(整型),并且 int 长度不在限制。


字符串类型

字符串的功能方法

name = "Hello,welcome to python"
# 正向对应下标 012345678910..."(从左到右,索引值从0开始)
# 负向对应下标  ...-4-3-2-1    (从右到左,索引值从-1开始)


# index()方法返回子字符串在字符串中的对应索引 如果这个字符或字符串出现多次,则只返回第一次出现的索引值
print(name.index('H'))

# 字符串是一个序列 也就是说字符串是按照从左至右的顺序排列的 字符串的索引是从0开始
print(name.index('e'))

索引

正向索引表示,索引值从0开始,从左至右依次递增

负向索引表示,索引值从-1开始,从右至左依次递减

step大于零,表示从左往右读取;step小于零表,示从右向左读取:


name = 'ABCDEFGHIJKLMN'

print(name[-1:-7]) 
#这里拿不到值 因为步长step是1,代表正向去读取索引name[-1:] & name[:-7]的交集,刚好为空,所以拿不到值;

你也可以这么理解,你正向取的,只能正向读;你负向取的,只能负向读;不能正向取了负向读,这是不行的,也不能负向取了正向读;

想要拿到值就要让step小于1,或者再负向输出一次
print(name[-1:-7:-1])

字符串切片

字符串切片var[start_index:end_index:step] 如果省略end_index和step,则默认截取到整个字符串的末尾,

另外如果指定了截止索引(end_index),则这个截止索引是拿不到的,也就是说切片的索引使用是左包右不包

name2 = 'ABCDEFGH'
print(name2[0:4:1])
print(name2[0:4:2])
step指定间隔索引的长度
step表示每一个都取,step为2,表示隔一个取一个,隔一个取一个

name = "Hello,welcome to python"

print(name[0:4])
print(name[0:5])
从左开始,H的索引值是0,e的索引值是1,第一个l的索引值是2,第二个l的索引值是3,o的索引值是4,但是因为他是左包右不包的,所以你如果写成[0:4]的话,他是取不到o的,所以他要给截止索引值加一,相当于是[0:5],这样才可以取到完整的Hello

name = 'ABCDEFGHHIJKLMN'
# 也可以指定起始索引
print(name[2:6])

# 同理也可以省略起始索引,省略起始索引相当于从0开始
print(name[:5])

# 也可以起始索引跟截止索引都省略,代表输出整个字符串,跟直接输出字符串效果一样
print(name[:])
print(name)

count()方法

# count()方法用来去做字符或者字符串出现次数的一个统计
my_string = "China is a country!"
print(my_string.count('i'))
print(my_string.count('a'))
print(my_string.count('a', 0, 5)) #指定在索引值范围为0~5中统计字符a出现的次数

find()方法

my_string = "China is a country!"

# find()方法用来去查询子字符串在某字符串中出现的第一次的索引位置
print(my_string.find('a', 0, 12))
和index()方法英语只查询子字符在某字符第一次出现位置的索引值

replace()方法

my_string = "China is a country!"

# replace()函数可以用来去做子字符串的一个替换 常用
print(my_string.replace('China', 'USA'))

split()方法

# split()方法可以实现按照分隔符去进行切分字符串,并生成对应的列表 默认分隔符为空格 也可以自己指定分隔符
 print(my_string.split())
 print(my_string.split('a'))

join()方法

# join()方法用来把列表或者其他序列拼接起来
 print('='.join(['hello', 'world']))
 print('='.join(['hello''world']))
 print('-'.join('nihao'))
如果想指定拼接符,必须使用,隔开,否则没有效果

strip()方法

 # strip()方法去除字符串两边的空白;lstrip()去除左边空白 rstrip()去除右边的空白
 new_string = ' This a test string  '
 print(new_string.strip())
 print(new_string.lstrip())
 print(new_string.rstrip())

isalpha()方法

 # isalpha()方法用来判断是否为纯字母
 my_name = 'nebula'
 print(my_name.isalpha())
 my_name1 = 'nebula1'
 print(my_name1.isalpha())

isdigit()方法

 # isdigit()方法用来判断是否为纯数字
 my_name = 'nebula'
 print(my_name.isdigit())

isdecimal()方法

 # isdecimal()判断这个字符串是否是十进制的数字  不常用
 print('11'.isdecimal())

istitle()方法

 # istitle()方法代表判断这个字符串是否是英文的标题 也就是说每个单词首字母大写 不常用
 print('Hello World'.istitle())
 print('Hello world'.istitle())
 print('Hello1 World'.istitle())
 print('1Hello World'.istitle())
注意不能整个字符串都为大写字母,否则输出False

isspace()方法

 # isspace()方法用来判断是否是空白
 print(' asdf'.isspace())
 print('  '.isspace())

snumberic()方法

 # isnumberic()方法用来判断是否为数字化的字符串 跟isdigit等效 不常用
 print('1234565'.isnumeric())
 print('12sd333'.isnumeric())
 print('1.2'.isnumeric())
只能为整数,如果有小数,输出False

isalnum()方法

 # isalnum()方法用来判断是否为字母跟数字的组合
 print('123sdf'.isalnum())
 print('123,abcsd'.isalnum())

islower()方法

 # islower()方法用来判断是否为纯小写
 print('lower'.islower())
print('Lower'.islower())

isupper()方

 # isupper()方法用来判断是否为纯大写
 print('UPPER'.isupper())

startswith()方法

 # startswith()方法用来判断字符串是否以某个字符开头
 print('Abcd'.startswith('A'))
 print('Abcd'.startswith('b'))

endswith()方法

 # endswith()方法用来判断字符串是否以某个字符结尾
 print('abctxt'.endswith('txt'))

upper()方法

 # upper()方法用来转化字母为大写 lower()方法用来转化字母为小写
 print('lower'.upper().lower())

removesuffix()方法

 # removesuffix()方法是移除字符串的后缀
 print('testtxt'.removesuffix('txt'))

removeprefix()方法

 # removeprefix()方法是移除字符串的前缀
 print('text.txt'.removeprefix('text'))

capitalize()方法

 # capitalize()方法实现将字符串首字母转化成大写 不常用
 print('this is a page'.capitalize())

zfill()方法

 # zfill用来指定特定的长度,当字符串长度不够时,使用0在字符串左侧进行填充补齐长度  不常用
 print('hello'.zfill(10))

casefold()方法

 # casefold()方法返回适合无大小写比较的字符串版本。 等同于lower()方法  不常用
 print('AbcD'.casefold())

partition()方法

 # partition()方法实现将按照指定的字符串的分隔符进行分割字符串,生成一个三个部分元组,类似于split()  不常用
 print('Hello my world hhh'.partition(' '))
 print('Hello,my world hhh'.partition('H'))

splitlines()方法

 # splitlines()方法可以实现将字符串按照换行符进行切割,生成多个元素组成的一个列表
 poem = """春眠不觉晓,
 处处闻啼鸟,
 夜来风雨声,
 花落知多少。
 """
 print(poem.splitlines())

swapcase()方法

# # swapcase()方法是交换大小写 不常用
# print('AbCdef'.swapcase())

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

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

相关文章

【数据结构】顺序表:随机访问的速度快到飞起

👑专栏内容:数据结构⛪个人主页:子夜的星的主页💕座右铭:日拱一卒,功不唐捐 文章目录一、前言二、线性表三、顺序表1、定义2、静态顺序表3、动态顺序表4、接口实现Ⅰ、初始化Ⅱ、销毁Ⅲ、增容Ⅳ、插入Ⅴ、删…

中国各省人力资本测算就业人员受教育程度构成(2000-2021年)

数据来源:自主整理 时间跨度:2000-2021年 区域范围:全国各省 指标说明: 人力资本测算公式:(小学*6初中*9高中*12大专及以上*16)/六岁及以上人口 参考文献: [1]罗仁福, 刘承芳,…

Python pandas「原有或者新建」Excel中「追加新或者新建」sheet

1.pandas原有Excel中追加新sheet 使用Pandas库,我们可以轻松将数据追加到现有的Excel工作簿中的新工作表中。以下是追加新工作表的简单步骤: 读取现有的Excel文件 使用Pandas库中的read_excel()函数读取现有的Excel文件。指定Excel文件的路径和文件名&a…

多模态机器学习入门Tutorial on MultiModal Machine Learning——第一堂课个人学习内容

文章目录课程记录核心技术Core Technical Challengesrepresentation表示alignment对齐转换translationFusion融合co-learning共同学习总结Course Syllabus教学大纲个人总结第一周的安排相关连接课程记录 这部分是自己看视频,然后截屏,记录下来的这部分的…

C生万物 | 模拟实现库函数strcpy之梅开n度

文章目录【梅开一度】:观察库函数strcpy()的实现【梅开二度】:模仿实现strcpy()【梅开三度】:优化简练代码【梅开四度】:assert()断言拦截【梅开五度】:const修饰常量指针【梅开六度】:还可以有返回值哦&am…

如何使用linux服务器多核跑程序和unhashable type: ‘list‘报错的解决方案

问题描述 在使用服务器多核跑程序的时候,需要把核心的程序抽取出来,然后提供迭代参数。然后就可以使用多核去跑程序了。但是在执行的过程中报错如下: Exception has occurred: TypeError unhashable type: list File "/home/LIST_208…

【机器学习 深度学习】通俗讲解集成学习算法

目录:集成学习一、机器学习中的集成学习1.1 定义1.2 分类器(Classifier)1.2.1 决策树分类器1.2.2 朴素贝叶斯分类器1.2.3 AdaBoost算法1.2.4 支持向量机1.2.5 K近邻算法1.3 集成学习方法1.3.1 自助聚合(Bagging)1.3.2 提升法(Boosting)1.3.2.1 自适应adaboost1.3.3 …

【C语言编译器】02 Windows下 7 种C语言IDE的使用(万字长文警告,含Visual Studio多个版本)

目录一、Visual Studio1.1 VS 20101.2 VS 20151.21 简介1.22 使用1.3 VS 20171.31 简介1.32 使用1.4 VS 20191.41 简介1.42 使用1.5 VS 20221.6 VS 安全函数问题1.7 VS “无法查找或打开PDB文件” 问题二、CLion2.1 CLion简介及安装2.2 使用CLion编写C程序三、Dev C3.1 Dev C简…

【ubuntu 22.04不识别ch340串口】

这个真是挺无语的,发现国内厂商普遍对开源环境不感兴趣,ch340官方linux驱动好像被厂家忘了,现在放出来的驱动还是上古内核版本: 于是,驱动居然要用户自己编译安装。。还好网上有不少大神:链接,…

一起学 pixijs(3):Sprite

大家好,我是前端西瓜哥。今天来学习 pixijs 的 Sprite。 Sprite pixijs 的 Sprite 类用于将一些纹理(Texture)渲染到屏幕上。 Sprite 直译为 “精灵”,是游戏开发中常见的术语,就是将一个角色的多个动作放到一个图片…

零基础小白如何学会Java?

Java作为目前使用最广泛的编程语言,自身在常见的企业级业务应用程序以及Android应用程序等方面都有突出的表现。作为跨平台语言,具有安全性、易用性、通用性等特点,被特意设计用于互联网的分布式环境。 对于很多喜欢代码的小伙伴来说Java都是…

音乐播放器-- 以及数据库数据存储

运行环境 : java1.8 数据库以及代码编写工具 : sqlserver -- mysql 也可以 工具 eclipse 编码gbk窗体 : Swing使用了jaudiotagger 进行了音乐处理 图片展示 ----- 空闲时间 做出来玩的项目 部分功能还没有完善 完善了的功能 音乐 /// 主页 &a…

SheetJS的部分操作

成文时间:2023年2月18日 使用版本:"xlsx": "^0.18.5" 碎碎念: 有错请指正。 这个库自说自话升级到0.19。旧版的文档我记得当时是直接写在github的README上。 我不太会使用github,现在我不知道去哪里可以找到…

SpringMvc介绍。

目录 1、SpringMvc概述 1、基本介绍 2、工作流程 3、bean加载控制 二、请求 1、请求映射路径 2、请求方式 3、请求参数 4、请求参数(传递json数据) 5、日期类型参数传递 三、响应 四、REST风格 1、REST简介 2、RESTful入门案例 3、RESTfu…

信号完整性设计规则之串扰最小化

本文内容从《信号完整性与电源完整性分析》整理而来,加入了自己的理解,如有错误,欢迎批评指正。 1. 对于微带线和带状线,保持相邻信号路径的间距至少为线宽的2倍。 减小串扰的一种方式就是增大线间距,使线间距等于线…

GeniE 实用教程(三)属性

目 录一、前言二、材料属性三、截面属性3.1 梁横截面3.2 板壳厚度3.3 截面赋予四、截面偏置4.1 梁偏置4.2 板壳偏置五、局部轴方向5.1 梁的局部轴5.2 板壳的法向六、水力属性6.1 湿表面属性6.2 水动力参数七、参考文献一、前言 SESAM (Super Element Structure Anal…

23 pandas Excel文件的拆分与合并

文章目录一个文件夹下多个工作簿的合并【单独Sheet】同一工作簿中多个Sheet合并ExcelWriter针对不同工作表的操作将一个工作表拆分成多个工作表将一个工作表拆分成多个工作簿一个文件夹下多个工作簿的合并【单独Sheet】 1把文件夹下所有的文件都遍历出来2循环读取文件放入一个…

【C++】再谈vscode界面调试C++程序(linux) - 知识点目录

再谈vscode界面调试C程序(linux) 配套文档:vscode界面调试C程序(linux) 命令解释 g -g ../main.cpp 编译main.cpp文件; -g:生成调试信息。编译器会在可执行文件中嵌入符号表和源代码文件名&…

程序员必备的技能-深入理解 Linux 内核拆解

841 页的《深入理解 Linux内核》堪称经典,时隔多年打开,泛黄的纸张上面仍然跳跃出一个个让人心潮澎湃的知识点,突然让我想起一位微信朋友的昵称:知识的舔狗!拆,开始~前言第一章 绪论Linux与其他类Unix内核…

springmvc汽车企业公司网站的系统设计 java ssm

红旗汽车走进社区,走进生活,成为当今生活中不可缺少的一部分。随着汽车行业的发展,加强管理和规范管理司促进红旗汽车网站健康发展的重要推动力。在我国迎来良好的发展机遇,但同时也确实有许多问题的需要研究和探讨。系统主要完成…