一、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。对于上面的代码,器赋值示意图如图所示。

python 类型指定参数 可选值 python 指定数据类型_numpy

同样,我们也可以利用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 类型指定参数 可选值 python 指定数据类型_字符串_02

 需要特别注意的是,在 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)

还有其他详细操作,小编这里会在后续不断带着大家普及学习, 小编这里希望屏幕前的你也要努力呀!越努力,越幸运,小编也是从小白开始的,如果小编还有不足的地方,敬请大家共同批评指正,再一次,感谢大家的支持了!