小白学python第三天:基本数据类型

python的独特之处

python在变量方面最独特的地方在于:这货的变量竟然不需要声明;C语言中总是在创建变量的时候声明一下:int a = 1;但是在python中这么写是违法的。在python中变量本身没有类型,在python中的“类型”是指变量指向的内存中对象的类型。不得不说真的很方便。

其次python允许同时对多个变量赋值:

a=b=c=1
a,b,c=1,2,'suzi'

同时也可以对多个变量指定多个对象,如上述代码所示;第一行是同时赋值a,b,c为1;第二行是指赋值a=1,b=2,c='suzi'其中c为字符串对象。

python中常见的数据类型

  1. 数字number
  2. 字符串String
  3. 布尔类型bool
  4. 列表list
  5. 元组tuple
  6. 集合set
  7. 字典Dictionary

 其中数字、字符串、元组是不可变数据;列表、字典、集合是可变数据。

还有一些高级的数据类型,如字节数组类型(本人还没有学到,等学到了一定单独整理。。。)

Number数字类型

在python中,只有int一种整形(我去真简单)

数字类型有int,float,bool,complex(复数)四种

值得注意的是,在python中,bool类型是int的子类,True和False可以和整形相加,如下所示

a=1
b=2.0
c=True
d=1+2j
e=a+c
print(e)


D:/PYTHON_CODE/Train_File/train01.py
2

数值运算

在python中加减乘除如下代码所示:

a=1+2
b=1-2
c=1*2
d=1/2#单个/号得到的结果是一个浮点数
e=1//2#两个/号得到的是一个整数
f=1%2#取余操作
g=2**3#2的3次方
print(a,b,c,d,e,f,g)

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
3 -1 2 0.5 0 1 8

值得注意的是,python中的除法操作分两种,切莫混淆。 

另外,在混合运算中,整形数据会自动转换为浮点数。

String字符串

python中的字符串用单引号和双引号都可以没区别’

字符串可以截取,具体字符串的具体用法如下所示:

(索引值以0是从头开始,以-1是从末尾开始)

但是比如说索引值为a[0:-1],它指的是从第一位到倒数第二位,在python中这样的表示是不包含最后一位的。要想从开始到最后一位需要这么写:a[0: ] 具体见代码:

a='123456789'
print(a)
print(a[0])
print(a[0:-1])
print(a[0:])
print(a[0:-1:2])#2表示步长,即取第一位,第三位,第五位。。。。。
print(a[3:5])
print(a*2)
print(a+'suzi')
print(a[3:5]*2)

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
123456789
1
12345678
123456789
1357
45
123456789123456789
123456789suzi
4545

 转义符

字符串中如果有转义符会自动转义,如果不想让他转义就在前面加个r

b='123456\n789'
print(b)
c=r'123456\n789'
print(c)

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
123456
789
123456\n789

但是和C语言不通的是,python中的字符串是不可以被修改的。 

bool布尔类型

bool类型在数字类型之中就已经提到,这里记录一下布尔类型转换:

利用bool()函数可以将其他的类型转换为布尔类型;当转换的数据为0,0.0,0+0j,空序列,空映射时,转换为False,其他的全为True。

print(bool(0))
print(bool(1))
print(bool(1.2))
print(bool(''))
print(bool(' '))
print(bool([]))
print(bool(()))

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
False
True
True
False
True
False
False

注意:空格不是空字符串,它的长度为1

List列表

列表的用法和字符串差不多,都是按一个序列来整的

序列的元素之间用逗号隔开

list1=[1,2.0,2+2j,True,'suzi']
list2=['zhangsan',100]
print(list1[0])
print(list1[0:-1])
print(list1[0:])
print(list1[0::2])
print(list1+list2)
print(list1*2)
list1[0]=2
print(list1)

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
1
[1, 2.0, (2+2j), True]
[1, 2.0, (2+2j), True, 'suzi']
[1, (2+2j), 'suzi']
[1, 2.0, (2+2j), True, 'suzi', 'zhangsan', 100]
[1, 2.0, (2+2j), True, 'suzi', 1, 2.0, (2+2j), True, 'suzi']
[2, 2.0, (2+2j), True, 'suzi']

跟字符串不同的是,列表中的数据是可以改变的

 如果截取步长为负数,则表示可以逆向读取如list1[-1: :-1],第一个-1表示从倒数第一个值开始,第二个-1表示从尾到头读取。

def reverseWords(input):
    inputWord=input.split(" ")
    inputWord=inputWord[-1: :-1]
    output=' '.join(inputWord)
    return output
input='I am boy'
output=reverseWords(input)
print(output)

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
boy am I

从这里学到了split()函数和jion()函数

def reverseWords(input):
    inputWord=input.split("b")
    inputWord=inputWord[-1: :-1]
    output='c'.join(inputWord)
    return output
input='abababab'
output=reverseWords(input)
print(output)

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
cacacaca

其实还蛮有趣。

Tuple元组

元组跟列表更是相似,但是用法不一样,元组用()括住,而且元组和字符串一样不能进行修改,有趣的是元组里面可以引用列表,这个列表可以修改:

list1=[1,2.0,2+2j,True,'suzi']
tup1=(1,2.0,3,True,list1)
print(tup1)
list1[0]=2
print(tup1)

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
(1, 2.0, 3, True, [1, 2.0, (2+2j), True, 'suzi'])
(1, 2.0, 3, True, [2, 2.0, (2+2j), True, 'suzi'])

然后就是元组之中只有一个元素时需要加个逗号a=(1,),不然的话a=(1)会被自动识别为带括号的整形数据。元组本身虽然不能修改,但是元组和元组之间可以像字符串一样拼接。

Set集合

和我们高中数学学的集合一样,无序,不重复,可以空。

创建方式:

a={1,2,3,True,4,5,2}#第一种方法a={a1,a2,a3....}大花括号
b=set('asdfghjkas')#第二种方法
c=set('dfgjkdf')#a=set(value)
print(a)
print(b)
print(c)
print(c-b)
print(c|b)
print(c&b)
print(c^b)

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
{1, 2, 3, 4, 5}
{'j', 'g', 'a', 'h', 's', 'f', 'd', 'k'}
{'j', 'g', 'f', 'd', 'k'}
set()
{'j', 'g', 'a', 'h', 's', 'f', 'd', 'k'}
{'j', 'g', 'f', 'd', 'k'}
{'a', 'h', 's'}

Dictionary字典 

字典中的元素是通过键来存取的,跟列表不一样,列表是有序的,可以用偏移来对值进行索引,可以直接a[0],a[1]....字典是无序的,后面可以在做学生管理系统的时候用到,好比是一个班考试,张三考了100,李四考了99,那么’张三‘,’李四‘就是所谓的键,100,99就是所谓的值。为了索引的必要,键必须是唯一的。

dict1 = {}
dict1['zhangsan'] = 100
dict1['lisi']     = 99

dict2 = {'zhangsan': 100,'lisi':99, 'wangwu':98}

print(dict1)
print(dict1['zhangsan'])       
print(dict1['lisi'])           
print(dict2)
del dict2['zhangsan']       
print(dict2.keys())   
print(dict2.values()) 

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
{'zhangsan': 100, 'lisi': 99}
100
99
{'zhangsan': 100, 'lisi': 99, 'wangwu': 98}
dict_keys(['lisi', 'wangwu'])
dict_values([99, 98])

bytes 类型 

其实本人不太明白这是干啥用的,希望在以后的学习中能正式的接触到这种数据类型的运用。

它表示的是一个二进制序列,序列中存储的元素是0-255的整数,一般的创建方式是加b前缀

x=b'suzi'#定义一个bytes序列
print(x[0])#看看第一位存储的是几

if(x[1]==ord('u')):
    print('对的')


PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
115
对的

ord()将取出来的字符换成整数值(说实话确实迷糊) 

python中数据类型的判定

python中内置type()函数可以判定变量的数据类型,使用方式如下:

a=1
b=2.0
c=True
d=1+2j
e=a+c

print(type(a),type(b),type(c),type(d))
PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

用法还是很简单的

其次还能用isinstance来判断

x= isinstance(a,int)
print(x)

返回的是布尔值True

值得注意的是,type()不会把子类型当作父类型的一种类型,而isinstance会把子类型当作父类型的一种类型,举个例子比如下面代码:

f=True
y=isinstance(f,int)
z=(type(f)==int)
print(y,z)

返回的结果如下图所示:

PS D:\PYTHON_CODE> & C:/Users/Administrator/AppData/Local/Programs/Python/Python38/python.exe d:/PYTHON_CODE/Train_File/train01.py
True False

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值