一、Python中的基本数据类型
程序,本质上就是针对各种数据的一种处理流程。正是因为有了各种数据类型,程序才可以[有的放矢(有序)]地进行各种不同数据类型操作而不至于乱套。
其实在广义上讲,数据类型可以分为标准数据类型和自定义数据类型。所谓自定义数据类型,就是面向对象编程中提到的概念——类(class)。而标准数据类型就是Python提供的七种内部数据类型,它们分别是Number(数值数据类型)、Boolean(布尔数据类型)、String(字符串数据类型)、List(列表数据类型)、Tuple(元组数据类型)、Dictionary(字典数据类型)以及Set(集合数据类型),下面我们分别对这几种基本数据类型进行详细的介绍和分析。
(小编这里把数字型数据类型分开写为数值型与布尔型,数字型数据类型包括了布尔型和数值型数据,在其他一些文章中可能只划分为六类数据类型,这里小编把它们划分成了七类)
1、数值型(Number)
常用的数值型数据包括int(整型)、float(浮点型)、complex(复数)等。
# 整型数据(int)
a = 1 # 变量a被赋值为1
# print(id(a)) # id()查看内存地址
# 浮点数(float)
print(float(2))
print(int(5.6)) # int转为float不会进行四舍五入
# 复数(complex(a,b)实部a,虚部b)
z = complex(1, 2)
print(z)
对于数值型的复制和计算都很直观,就像在大多数语言中一样,大部分的变量只能有一个值,当某个变量被赋予一个新值时,旧值就会被覆盖写掉,代码如下所示:
a = 1
print(type(a)) # type()查看数据类型 打印输出为:<class "int">
a = 4 # 变量a被重新赋值为5
print(a) # 输出的a的值,可发现“新人迎来,旧人弃(俗称“喜新厌旧”)”
在python中,我们可以给多个变量集体赋相同的值,代码如下:
x=z=y=10
print(x,z,y)
上述方法并没有特殊之处,很多编程语言都能够做到。但不同于C、C++和Java等编程语言的是,在Python中,允许在同一行给多个变量分别赋不同的值,代码如下所示:
a,b,c=10,4.7,3+10j # 给a、b、c三个变量赋不同的值
print(a,b,c)
下面我们对这行代码进行解读
(1) 在Python中,我们可以同时为多个变量赋值,如a,b=1,2.其实它相当于a=1,b=2。对于上面的代码,器赋值示意图如图所示。
同样,我们也可以利用type()函数分别验证上述三个变量的[身份],代码如下。
a,b,c=10,4.7,3+10j # 给a、b、c三个变量赋不同的值
print(type(a),type(b),type(c))
# 打印输出<class 'int'> <class 'folat'> <class 'complex'>
(2) 在Python中,一切皆对象。比如前面代码中提到的a,b,c=10,4.7,3+10j,实际上,等号左右两侧都是一个对象——元组,每一个元组包含三个元素。当两个元组相互赋值时,实际上就是[丁对丁,卯对卯],对应位置元素相互赋值。关于元组的概念,本章后续会详细讨论。
(3)对于复数的表示,虚数部分的格式是[数值j],而不是数学中常用的[数值i]。
(4)上面提及的a、b、c都是变量标识符。对于变量名称,Python是有讲究的,即是标识符只能是字母、数字、下划线(_),但变量名不能以数字开头,并且中间不能包含空格。而且Python中的标识符是区分大小写的,如name和Name是不同的变量。
下面我们再来简单演示一下基于数值型的运算,具体如下:
5+5 # 加法,10
3.5-11 #减法,-7.5
3*10 # 乘法,30
2/4 # 除法,0.5
2//4 # 取整,0
15%4 # 取余,3
2**4 # 乘方,16
数值型的运算比较简单直观,但需要读者注意的有两点:数值的除法(/)总是返回一个浮点数(如 2/4=0.5),要获取整数需使用双斜线操作符(//),如 2//4=0;在多种数据类型混合计算时,Python 会把整数转换成浮点数,即进行类型转换时趋向于精确化。
2、布尔型
Python 中的布尔类型常量有两个,True 和 False(注意首字母要大写),分别对应整型数字 1 和 0。所以在严格意义上来讲,布尔类型属于前面讲到的数值型,可视为整型(int)的子类。例如,语句 True+2 的计算结果为 3。
Python 语言支持逻辑运算符,表 2-1 以 a 为 100、b 为 200 说明了 Python 中逻辑运算符的使用方法
需要特别注意的是,在 Python 中,任何非 0 和非 null 的情况都可视为 True(有点类似于 C 或 C++ 中的「非零即为真」),0 或者 null 为 False。
# bool类型
# print(3 in [1, 2, 3])
#
print(bool(1))
# 除零以外,都为True
# print(bool(5)) # True
print(bool(0.0))
#
# 除了空字符bool值为False,其他都为True。含空格的字符串也属于非空字符串
print(bool('0')) # True
print(bool('')) # False
print(bool(' ')) # True
#
# print(True + 1) # 2,True可以看作数值1
# print(False + 1) # 1,False看作为0
# None的bool值永远都为False
# print(None == 0) # False
# print(None == '') # False
print(10 and 20) # 20
print(10 or 20) # 10
3、字符串
字符串(string,作为类别名称时用 str 表示)是由一系列字符组成的,它对文本数据的处理非常重要。在形式上,将一系列的字符用单引号(' ')或双引号(「 」)包裹起来即可得到字符串,同时可用反斜杠「\」表示特殊的转义字符。
转义字符(详解)可以参考以下博主的内容
原文链接:
1、字符串的创建
# 创建字符串
# 单引号
s1 = 'hello \\n world' # \n代表换行 \\n正常打印\n
print(s1)
# 双引号
s2 = "hello \\n world"
print(s2)
# 三对引号,文本格式,保留文本格式
s3 = """hello
world"""
print(s3)
2、字符串拼接:使用 + 号或 * 号可以将多个字符串拼接起来。
# 字符串的组成方式
print('1' + '2') # 字符串与字符串之间用+,拼接的
3、字符串切片:使用 [start:end:step] 的语法可以对字符串进行切片操作。
# 字符串的切片
# 语法:slice(start,stop[,step)) # start表示起始位置,默认为0,stop结束位置默认最后一个元素,可选参数:步长,默认为1
# 字符串的切片
name = "hello world"
# print(len(name)) # 字符串长度
# print(name[6:10:]) # 范围是半闭半开区间 [6:10)
print(name[6:11:]) # 取完整个字符串
print(name[::2]) # 间隔两个输出
print(name[::-1]) # 逆序输出
# 字符串的下标
s1 = 'hello world'
print(s1[1]) # 下标从0开始
print(s1[10]) #
print(s1[-1]) # 取最后一个值
print(len(s1)) # len()函数用来计算字符串长度
# print(s1[12]) #越界,超出范围
# s1[0] = 'H'
# print(s1) # 字符串不支持改变
4、字符串替换:使用 replace() 函数可以替换字符串中的某个字符串。
# 字符串的替换
'''语法:S.replace(old,new[,count])-->替换列表中的元素'''
s1 = 'hello old old girl'
print(s1.replace('old', 'beautiful')) # 默认全部替换
print(s1.replace('old', 'beautiful', 1)) # 替换一次
print(s1) # 在进行替换时,先进行了一次复制,之后再做操作
5、字符串查找:使用 find() 或 index() 函数可以在字符串中查找某个字符串。
# 字符串的查找
'''
语法:S.find()-->返回该元素的最小索引值
语法:S.index()-->返回该元素的最小索引值,存在局限性,找不到该元素会报错
'''
s = 'hello python'
print(s.find('e')) # 1
print(s.find('o')) # 4,返回最小索引
print(s.find('b')) # -1,没有不报错,返回-1
print(s.index('o')) # index()函数作用在列表中找到该元素并返回其位置,没有找到会报错
6、字符串格式化:使用 format() 函数可以对字符串进行格式化操作。
# 字符串格式化
name = 'ximeng'
age = 20
# 方法一 %s——str字符串,%d——int整数,%f——false浮点数
# %需要考虑数据类型
# print("%s的年龄为%d"%(name, age))
# 方法二 str.format()
print("{}的年龄为{}".format(name, age)) # 需要考虑顺序
print("{1}的年龄为{0}".format(age, name)) # 通过下标索引,不需要考虑顺序
print(f"{name}的年龄为:{age}")
'''
f表达式----可以解析任意的数据类型
1、解析变量
name = “键盘”
age = 18
a = f"姓名:{name} 年龄:{age}"
print(a) # 结果:姓名:键盘 年龄:18
print(f"姓名:{name} 年龄:{age}") # 结果:姓名:键盘 年龄:18
2、解析字典
one_dict = {“name”: “键盘”, “age”: 18, None: True}
one_info = f"姓名:{one_dict[‘name’]} 年龄:{one_dict[‘age’]} None:{one_dict[None]}"
print(one_info) # 结果:姓名:键盘 年龄:18 None:True
3、日期格式化—需要导入import datetime
import datetime
today = datetime.datetime.today()
one_info = f"今天的日期是:{today:%Y,%m,%d}"
print(one_info) # 结果:今天的日期是:2021,08,23
4、解析函数
def fn(num):
print(“num=”, num)
return num + 100
one_info = f"调用函数之后,值为{fn(33)}"
print(one_info) # 结果:调用函数之后,值为133
print(f"调用函数之后,值为{fn(33)}") # 结果:调用函数之后,值为133
'''
7、字符串大小写转换:使用 upper() 或 lower() 函数可以将字符串转换为大写或小写。
# S.lower()-->将字符串全部转化为小写
s5 = 'ABC'
print(s5.lower())
# S.upper()-->将字符串全部转化为大写
s6 = 'abc'
print(s6.upper())
# 链式调用
print(s6.upper().lower()) # 只针对英文的大小写
8、python中去除字符串空格的几种方法
在处理Python代码字符串的时候,我们常会遇到要去除空格的情况,所以就总结了多种方法供大家参考。
方法1:字符串strip()、lstrip()和rstrip()方法
'''
strip删除字符串两边的空格
'''
username = ' 乐不思蜀,快乐学习! '
print(username.strip())
'''
lstrip删除左边字符串空格
rstrip删除右边字符串空格
'''
z = 'zzz '
print(z.rstrip())
u = ' yyy'
print(u.lstrip())
word='赵 钱 孙 李 周 昊 吴 郑 王'
word=''.join([i.strip(' ') for i in word])
print(word)
方法2:使用split()方法
word='编号 姓名 性别 年级 学校 奖项'
list=word.split(' ')
listnew=[i for i in list if i!='' ]
new=' '.join(listnew)
print(new)
方法3:使用replace()方法
# 使用replace()替换函数进行替换
word= '赵 李 王'
print(word.replace(' ',''))
方法4:使用列表推导式
word='赵 钱 孙 李 周 吴 郑 王'
word=''.join([i for i in word if i !=' '])
print(word)
方法5:利用切片提取字符进行拼接
# 利用切片删除单个固定位置的字符然后进行拼接
name="张 李 王"
print(name[0:1]+name[2:3]+name[4:])
拓展):去除列表中的空元素
# *_* coding : UTF-8 *_*
nba='哈登: 31.6 伦纳德: 31.2 乔治: 28.6 库里: 27.3 利拉德:26.9'
nbanew=nba.split(' ')
nbaone=[i for i in nbanew if i !='']
print(nbaone)
4、列表
所谓列表就好像是把一堆数据放在一种特定的容器中,这个容器就称为列表,每个数据叫做元素
,每个元素都有一个索引来表示它在列表中的位置。在Python中列表的定义如下:列表是内置有序、可变序列,列表的所有元素放在一对中括号“[]”中,并使用逗号分隔开。这里我们来学习列表的定义及相关操
1、创建列表
# 创建列表一
# li = [] # 空列表
# print(type(li))
#
# li = ['qianan', 18, 94, 160.0, True, 18] # 能同时存放不同数据类型的值
# print(li)
# 创建列表二
# list(iterable)
print(list('qi 18')) # ['q', 'i', ' ', '1', '8']
# print(list(1234)) # 整数是一个整体,不可分割
# print(list('1234')) # 可以
'''
列表创建(掌握)
注意:
1、变量最好不使用list
2、列表里的元素可以是任意类型
3、iterable表示可迭代的对象,简单来说就是可以一个一个元素取出来的,比如:str
4、列表是可变序列,字符串是不可变序列
'''
2、列表的修改
# 修改列表
li = [1, 2, 3, 4]
print(li[0])
print(li[4]) # list index out of range
li[1] = '2' # 根据下标修改列表元素
print(li)
3、列表的删除
li_1 = list('123456')
# del li_1[1]
# # print(li_1)
# del li_1 # 删除列表
# print(li_1)
# remove—— 根据元素删除
# li_1.remove('6')
# print(li_1)
# pop()
li_1.pop() # 默认删除最后一个元素
print(li_1)
li_1.pop(2) # 根据下标来删除元素
print(li_1)
li_1.clear() # 清除列表里面所有数据
print(li_1)
4、列表的添加
a1 = [1,2,3]
print(a1)
a1.append('hello') # 增加列表的元素
print(a1) # 打印输出[1,2,3,'hello']
a2 = [1,2,3]
a2.extend([4,5]) # extend函数增加列表的元素里面增加存放的是可迭代对象itemable
print(a1) # 打印输出[1,2,3,4,5]
a3 = [1,2,3]
a3.append([4,5])
'''
这里我们可以看一下这个插入的元素,append()函数会把这个列表看成一个整体元素直接插入a3列表中
'''
print(a3) # 打印输出 [1,2,3,[4,5]]
"""
append()和extend()函数都是插入在列表最后面的插入函数,下面我们来看一下指定位置插入函数insert()
"""
'''
insert(z1,z2)函数中第一个参数z1表示插入元素下标索引,第二个参数z2表示插入元素的数据内容
'''
a1.insert(3,'hello')
print(a1)
5、元组
元组是有序且不可更改的集合。在Python中,元组使用圆括号 ()
编写的。
1、元组的创建
元组的创建很简单,使用圆括号 () 直接创建或者使用 tuple() 函数创建,只需要在圆括号中添加元素,并使用逗号隔开即可。
# 创建元组
'''
当只存在一个元素时,元组后面必须跟一个逗号
'''
a = (2,)
print(type(a))
# 元组的创建
# tu = (1,1.0,'zfc')
# print(type(tu))
# tu1 = tuple()
# print(type(tu1))
# tu = tuple('123') # iterable可迭代对象
# print(tu) # ('1', '2', '3')
# tu1 = (123)
# tu2 = tuple(tu1) # 报错,数字Number类型数据不可迭代
# print(type(tu2))
# print(tu1)
# print(type(tu1)) # int
tu2 = (123,) # 元组需要注意的是如果只有一个元素,后面也要加英文状态下的','
print(tu2)
print(type(tu2))
其他详细操作可以参考小编的Python第四讲,原文链接:
6、字典
- Python内置的数据结构之一,与列表一样是一个可变序列。
- 以键值对的方式存储数据,字典是一个无序的序列。(列表是有序的)
- 字典通过计算key的hash值确定存储位置,所以key应为不可变序列(字符串,整数等)
1、字典的创建
# 字典的创建
"""字典的创建方式"""
'''使用{}创建字典'''
scores = {'张三': 100, '李四': 98, '王五': 45}
print(scores)
print(type(scores))
'''第二种创建dict()'''
student = dict(name='jack', age=20)
print(student)
'''空字典'''
d = {}
print(d)
2、字典的使用
# 字典的使用
english = {"we":"我们","world":"世界","company":"公司"}
print("world",english["world"])
3、 字典的其他操作
# 字典的其他操作
english = {"we":"我们","world":"世界","company":"公司"}
print(english)
english.clear() # clear()清空字典
print(english)
english1 = english.copy()
print(english1) # 浅拷贝,复制
print(english.keys) # key值
print(english.values) # values值
print(english.items) # 同时查看key和values值
7、集合
集合是无序的,集合中的元素是唯一的,集合一般用于元组或者列表中的元素去重
1、集合的创建
# 集合的创建
'''
格式1:变量名=set(元素,元素)
格式2:变量名={元素,元素...}
'''
# 创建空集合,这里需要注意的是空集合不能使用{}定义
s = set()
print("空集合:",s)
# 创建数字集合
s1 = {1,2,3}
print("数字集合:",s1)
# 创建混合类型集合
s2 = set([1,"您好!",3.14])
print("混合类型集合:",s2)
2、集合的添加
num = {1,2,3}
print(num)
num.add(4)
print(num) # {1,2,3,4}
num.add(5)
print(num) # {1,2,3,4,5}
3、集合的删除
# 集合的删除
num = {1,2,3}
print(num)
num.remove(2)
print(num) # {1,3}
n1 = {1,3,5}
n2 = {2,7,,1,3}
# 交集
print("交集",n1 & n2)
# 并集
print("并集",n1 | n2)
# 差集
print("差集",n1-n2)
# 对称差集
print("对称差集",n1 ^ n2)
还有其他详细操作,小编这里会在后续不断带着大家普及学习, 小编这里希望屏幕前的你也要努力呀!越努力,越幸运,小编也是从小白开始的,如果小编还有不足的地方,敬请大家共同批评指正,再一次,感谢大家的支持了!