内置数据类型
在编程中,数据类型是一个重要的概念。
变量可以存储不同类型的数据,并且不同类型可以执行不同的操作。
在这些类型中,Python默认拥有以下内置数据类型。
一,整数
整数就是没有小数部分的数字,Python中的整数包括正整数,0和负整数。
有些强类型的编程语言会提供多种整数类型,每种类型的长度都不同,能容纳的整数的大小也不同,开发者要根据实际数字的大小选用不同的类型。例如C语言提供short、int、long、long long 四种类型的整数,它们长度以此递增,它们的长度依次递增,初学者在选择整数类型时往往比较迷惑,有时还会导致数值溢出。
而Python则不同,整数不分类型,或者说它是一种类型的整数。Python整数的取值范围是无限的,不管多大或者多小的数字,Python都能轻松处理。
当所用数值超过计算机自身的计算能力时,Python 会自动转用高精度计算(大数计算)。
#将78赋值给变量n
n = 78
print(n)
print(type(n))
#给X赋值一个很大的整数
x = 8888888888888888888888
print(x)
print(type(x))
#给y赋值一个很小的整数
y = -7777777777777777777777
print(y)
print(type(y))
x 是一个极大的数字,y 是一个很小的数字,Python 都能正确输出,不会发生溢出,这说明 Python 对整数的处理能力非常强大。
不管对于多大或者多小的整数,Python 只用一种类型存储,就是 int。
在 Python 中,可以使用多种进制来表示整数:
我们平时常见的整数就是十进制形式,它由 0~9 共十个数字排列组合而成。
注意,使用十进制形式的整数不能以 0 作为开头,除非这个数值本身就是 0。
由 0 和 1 两个数字组成,书写时以0b
或0B
开头。例如,101 对应十进制数是 5。
#二进制
bin1 = 0b101
print('bin1Value: ', bin1)
bin2 = 0B110
print('bin2Value: ', bin2)
八进制整数由 0~7 共八个数字组成,以0o
或0O
开头。注意,第一个符号是数字 0,第二个符号是大写或小写的字母 O。
在 Python 2.x 中,八进制数字还可以直接以0
(数字零)开头。
#八进制
oct1 = 0o26
print('oct1Value:',oct1)
oct2 = 0o41
print('oct2Value:',oct2)
由 0~9 十个数字以及 A~F(或 a~f)六个字母组成,书写时以0x
或0X
开头,
#十六进制
hex1 = 0x45
hex2 = 0x4Af
print("hex1Value:",hex1)
print("hex2Value:",hex2)
二,浮点数
1,Python浮点数数据类型概念
浮点数据类型,可以简称为浮点类型
小数通常以浮点数的形式存储,在Python中用float表示。
可以理解为浮点数是用来描述小数的。
浮点数通常使用C中的double来实现。
Python中只有一种小数类型,就是float。
2.1小数的表示形式
2.1十进制表示形式
我们平时看到的小数形式,必须包含一个小数点。
num_float = 22.1
num2_float = 35.8
num3_float = 22.0
2.2指数表示形式
2.2.1指数表示形式概念
Python小数的指数表示形式。
mEe 或 mee :: Mantissa x Base^Exponent
说明:
::表示等价于; |
---|
m为尾数(Mantissa)部分,是一个十进制; |
e(最后那个e)为指数(Exponent)部分,是一个十进制整数; |
E或e(中间的E或e)是固定的字符,可以是大写的或者小写的,用与分割尾数部分和指数部分。整个表达式等价于ax10n。 |
Base为基,Base等于10. |
实列如下
22.1E1 = 22.1 x 10^1 # 其中 22.1 是尾数,1 是指数。
44E-2 = 44 x 10^-2 # 44 是尾数,-2 是指数
2.2.2注意事项
只要写成指数的形式,就是小数。
即使最终值看起来像一个整数。
type(44E2)
三,相关函数float()
返回从数字或字符串x生成的浮点数
class float([x])
x如果是字符串,则它必须是只包含十进制数字的字符串,字符串前面可以有符号(+或-),之前也可以有空格。 |
---|
x也可以是NaN(非数字),正负无穷大的字符串。 |
x如果是整数或浮点数,则返回具有相同值(在Python浮点数精度范围内)的浮点数如果实参在Python浮点精度范围外,则会触发OverflowError |
x如果没有实参,则返回0.0 |
实列如下:
例一,
result1 = float('23')
print('result1 = ', result1)
result2 = float('+23') # 字符串前可以有 + 符号,不影响结果
print('result2 = ', result2)
result3 = float('-23') # 字符串前可以有 - 符号,影响结果
print('result3 = ', result3)
result4 = float(' 23') # 字符串前可以有空格
print('result4 = ', result4)
例二,
result5 = float('NaN') # 实参也可以是非数字 NaN
print('result5 = ', result5)
例三,
result6 = float() #没有实参
print('result6 = ',result6)
三,字符串
字符串是 Python 中最常用的数据类型。我们可以使用引号( ' 或 " )来创建字符串。
创建字符串很简单,只要为变量分配一个值即可。例如:
var1 = 'Hello World!'
var2 = "Python zijin"
Python不支持单字符类型,单字符类型在Python中也是作为一个字符串使用。
Python访问字符串,可以使用方括号[]来获取字符串(这种方式也被称为切片),字符串的截取的语法格式如下;
变量[头下标:尾下标]
Python截取的特点是取头下标的值到尾下标的值(尾下标的值不取)
索引值以0为开始,-1为从末尾的开始位置。
str="ZiJinDian"#“”需要截取的字符
print(str[:3]) #取ZiJ(也就是截取ZiJinDian的前三个字母)
print(str[:-6])#取ZiJ(-6也就是删除ZiJinDian的后六个字母inDian留下ZiJ)
#取inD
print(str[3:6])#取ZiJinDian第4位5为和6位字母inD(从前索引)
print(str[-6:-3])#取ZiJinDian的inD(从后索引)
#只有头下标/尾下标的情况
print(str[:3])#截取ZiJinDian前三位ZiJ(从前截取)
#只有尾下标的情况,默认头下标为0(正序的0,也就是字符串开始的地方)
#也就是从字符串开头截取到3的位置(也就是ZiJ)
print(str[3:])#截取ZiJinDian后六位inDian(从后截取)
#只有头下标的情况,默认尾下标为0(逆序的0,也就是字符串结束的地方)
#也就是从3的位置截取到字符串结尾(也就是inDian)
#更多应用
str2 ="我爱我的祖国,就像我爱我的母亲,"
#截取协议名称
print(str2[:6]) #也就是截取前五位
#截取域名
print(str2[8:-1]) #也就是截取第八位到倒数第一位
在需要在字符中使用特殊字符时,python 用反斜杠 \ 转义字符。如下表:
Python字符串运算符
下表实例变量 a 值为字符串 "hello",b 变量值为 "ZiJinDian":
Python支持格式化字符串的输出。尽管这样可能会用到非常复杂的表达式,但最基本的用法是将一个值插入到一个字符串格式符%5的字符中。
在python中,字符串的格式化使用与C/C++中的print函数有着一样的语法。
name = "紫禁"
age = 22
print("我叫 %s 今年 %d 岁!" % (name, age))
python字符串格式化符号:
格式化操作符辅助指令:
Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能。
python三引号允许一个字符串跨多行,字符串中可以包含换行符,制表符以及其他特殊字符。
para_str = """这是一个多行字符串的实例
多行字符串可以使用制表符
TAB ( \t )。
也可以使用换行符 [ \n ]。
"""
print (para_str)
Python新格式化输出:f-string
1,f-string简介
python3.6引入了一种新的字符串格式方式:f-string格式化字符串。从%s格式化到format格式化再到f-string格式化,格式化的方式越来越直观,f-string的效率也较前两个高一些。
同时值得注意的是,f-string就是在format格式化的基础之上做了一些变动,核心使用思想和format一样,因此大家可以学习完%s和format格式化,再来学习f-string格式化
2,f-string的常见使用方法
2.1基本使用
1.11f-string 是 python3.6 之后版本添加的,称之为字面量格式化字符串,是新的格式化字符串的语法。
之前我们习惯用百分号 (%):
name = 'ZiJinDian'
print('Hello %s' % name)
f-string格式化字符串f开头,后面跟着字符串,字符串中的表达式用大括号{}包起来,它会将变量或表达式计算后的值替换进去,实列如下:
name = 'ZiJinDian'
print(f'hello{name}')#替换变量
print(f'{1+2}')#使用表达式
w = {'name':'ZiJinDian','url':'China'}
print(f'{w["name"]}:{w["url"]}')
用了这种方式明显更简单了,不用去判断使用%s,还是%d。
在Python3.8的版本中可以使用=符号来拼接运算表达式与结果:
x = 1
print(f'{x+1}')
x = 1
print(f'{x+1=}')
Unicode字符串
在Python2中,普通字符串是以8位ASII码进行存储位16位Unicode字符串,这样能够表示更多的字符集。使用的语法是在字符串前面加上前缀u。
在Python3中,所有的字符串都是Unicode字符串
Python的字符串内建函数
Python的字符串常用内建函数如下:
方法及描述
10 | isalnum()如果字符串至少有一个字符并且所有字符都是字母或数字则返回 True,否则返回 False |
---|---|
11 | isalpha()如果字符串至少有一个字符并且所有字符都是字母或中文字则返回 True, 否则返回 False |
12 | isdigit()如果字符串只包含数字则返回 True 否则返回 False.. |
13 | islower()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是小写,则返回 True,否则返回 False |
14 | isnumeric()如果字符串中只包含数字字符,则返回 True,否则返回 False |
15 | isspace()如果字符串中只包含空白,则返回 True,否则返回 False. |
16 | istitle()如果字符串是标题化的(见 title())则返回 True,否则返回 False |
17 | isupper()如果字符串中包含至少一个区分大小写的字符,并且所有这些(区分大小写的)字符都是大写,则返回 True,否则返回 False |
18 | join(seq)以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
19 | len(string)返回字符串长度 |
20 | ljust(width[, fillchar])返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
---|---|
21 | lower()转换字符串中所有大写字符为小写. |
22 | lstrip()截掉字符串左边的空格或指定字符。 |
23 | maketrans()创建字符映射的转换表,对于接受两个参数的最简单的调用方式,第一个参数是字符串,表示需要转换的字符,第二个参数也是字符串表示转换的目标。 |
24 | max(str)返回字符串 str 中最大的字母。 |
25 | min(str)返回字符串 str 中最小的字母。 |
26 | replace(old, new [, max])把 将字符串中的 old 替换成 new,如果 max 指定,则替换不超过 max 次。 |
27 | |
28 | rindex( str, beg=0, end=len(string))类似于 index(),不过是从右边开始. |
29 | rjust(width,[, fillchar])返回一个原字符串右对齐,并使用fillchar(默认空格)填充至长度 width 的新字符串 |
30 | rstrip()删除字符串末尾的空格或指定字符。 |
---|---|
31 | split(str="", num=string.count(str))以 str 为分隔符截取字符串,如果 num 有指定值,则仅截取 num+1 个子字符串 |
32 | splitlines([keepends])按照行('\r', '\r\n', \n')分隔,返回一个包含各行作为元素的列表,如果参数 keepends 为 False,不包含换行符,如果为 True,则保留换行符。 |
33 | startswith(substr, beg=0,end=len(string))检查字符串是否是以指定子字符串 substr 开头,是则返回 True,否则返回 False。如果beg 和 end 指定值,则在指定范围内检查。 |
34 | strip([chars])在字符串上执行 lstrip()和 rstrip() |
35 | swapcase()将字符串中大写转换为小写,小写转换为大写 |
36 | title()返回"标题化"的字符串,就是说所有单词都是以大写开始,其余字母均为小写(见 istitle()) |
37 | translate(table, deletechars="")根据 str 给出的表(包含 256 个字符)转换 string 的字符, 要过滤掉的字符放到 deletechars 参数中 |
38 | upper()转换字符串中的小写字母为大写 |
39 | zfill (width)返回长度为 width 的字符串,原字符串右对齐,前面填充0 |
40 | isdecimal()检查字符串是否只包含十进制字符,如果是返回 true,否则返回 false。 |
---|