本篇主要为Python中的基本数据类型学习。
计算机,顾名思义就是可以做数学计算的机器,因此计算机程序理所当可以处理各种数值。但计算机能处理的远不止数值,还可以处理文本、图形、音频、视频、网页等各种各样的数据,而不同的数据,需要定义不同的数据类型。
在Python中,能够直接处理的数据类型有以下几种:
一,数字类型 Number
数字类型包含整型int,浮点数float, 布尔型bool和复数complex
1. 整型int
Python3不同于Python2和其他语言,只有int,不存在short 、long等细节区分
>>> type(1)
<class 'int'>
>>> type(1000000000000)
<class 'int'>
进制标识
# 0b标志二进制
>>> 0b10
2
# 0o标志八进制
>>> 0o10
8
# 0x标志16进制
>>> 0x10
16
进制转换
# 转二进制
>>> bin(1)
'0b1'
# 转八进制
>>> oct(1)
'0o1'
# 转十进制
>>> int(0b01)
1
# 转16进制
>>> hex(1)
'0x1'
2. 浮点型 float
Python3不同于其他语言,float也不存在单精度(float)和双精度(double)
>>> type(1.0)
<class 'float'>
>>> type(1.000000000001)
<class 'float'>
>>>
整数的四则运算,类型以具体结果为准
>>> type(1+1)
<class 'int'>
# // 标示整除
>>> type(1//1)
<class 'int'>
>>> type(1//2)
<class 'int'>
>>> type(1+1.0)
<class 'float'>
# 注意:Python中的结果为1.0
>>> type(1/1)
<class 'float'>
>>> type(1/2)
<class 'float'>
3. 布尔型 bool
布尔型表示真或假,首字母必须大写
>>> True
True
>>> False
False
>>> true
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'true' is not defined
结果为False的一些情况
>>> bool('abc')
True
>>> bool(0)
False
>>> bool(0.0)
False
>>> bool({})
False
>>> bool([])
False
>>> bool('')
False
>>> bool("")
False
>>> bool(None)
False
>>> bool(none)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'none' is not defined
任何为空的都为False,None也必须首字母大写
4. 复数complex
>>> 36j
36j
j标识复数
我们把形如z=a+bi(a,b均为实数)的数称为复数,其中a称为实部,b称为虚部,i称为虚数单位。当z的虚部等于零时,常称z为实数;当z的虚部不等于零时,实部等于零时,常称z为纯虚数。
这个不常用到,快速学一门新语言要抓重点,不要死抠一些细节
二,组
1. 序列 - 字符串 Str
单引号、双引号和多行字符串
>>> "Let's go"
"Let's go"
# 对于字符串非常长或需要换行的可以用三引号
>>> '''this string
...
...
...
... is to long
... '''
'this string\n\n\n\nis to long\n'
# 单引号也可以换行,用\
>>> 'hello \
... world'
'hello world'
转义字符
# 换行符
>>> print('\n')
# 制表符
>>> print('\t')
# 单引号
>>> print('\'')
'
# 换行
>>> print('\r')
原始字符串
# 正常会被转义
>>> print('C:\Windows\normal')
C:\Windows
ormal
# 采用转义符处理
>>> print('C:\Windows\\normal')
C:\Windows\normal
# 加r(不区分带小写)之后的原始字符,所见即所得,不会再有转义的情况
>>> print(r'C:\Windows\normal')
C:\Windows\normal
>>> print(R'C:\Windows\normal')
C:\Windows\normal
字符串的操作
# 字符串运算,拼接
>>> 'hello' + ' world'
'hello world'
# 可以用字符串 * N
>>> 'hello ' * 3
'hello hello hello '
获取指定字符
# 字符串序号从0开始
>>> 'hello world'[0]
'h'
# 空格也算字符
>>> 'hello world'[5]
' '
# 负号表示从右边起,第N个数
>>> 'hello world'[-1]
'd'
截取字符串
# N >=1 && N < 6
'hello world'[1:6]
'ello '
# 从0到最后,右边为空,则表示到最后;左边为空,则表示从首开始
>>> 'hello world'[0:]
'hello world'
# 数量超出不影响
>>> 'hello world'[0:100]
'hello world'
# 从0到倒数第一个数,不包含最后一个
>>> 'hello world'[0:-1]
'hello worl'
# 对于很长的字符串,负数截取更方便
>>> 'hello php,java,python,go,c,c++,vb,.net,react,vue,node,'[0:-1]
'hello php,java,python,go,c,c++,vb,.net,react,vue,node'
# 负号在前面表示从右边开始数,直到最后
>>> 'hello php,java,python,go,c,c++,vb,.net,react,vue,node'[-4:]
'node'
2,序列 - 列表 list
列表的定义
# 列表用list标识
>>> type([1,2,3])
<class 'list'>
# 列表定义
>>> [1,2,3,4,5]
[1, 2, 3, 4, 5]
# 列表元素可以为任意值
>>> [1,"hi",3,True]
[1, 'hi', 3, True]
# 嵌套列表
>>> [1,[1,2,3]]
[1, [1, 2, 3]]
列表的访问(跟字符串的访问方式一样)
>>> ['吃饭','睡觉','打豆豆'][0]
'吃饭'
>>> ['吃饭','睡觉','打豆豆'][0:1]
['吃饭']
>>> ['吃饭','睡觉','打豆豆'][-1:]
['打豆豆']
列表的操作
# +
>>> ['暴击'] + ['防御']
['暴击', '防御']
# *
>>> ['暴击'] * 3
['暴击', '暴击', '暴击']
定义只有一个元素的列表
>>> [1]
[1]
>>> type([1])
<class 'list'>
3,序列 - 元祖 tuple
元祖的定义
# 元祖用tuple标识
>>> type((1,2,3))
<class 'tuple'>
# 元祖的定义
>>> type((1,2,3))
<class 'tuple'>
>>> (1, '2', True)
(1, '2', True)
# 元祖的访问
>>> (1, '2', True)[1]
'2'
>>> (1, '2', True)[0:]
(1, '2', True)
# 元祖的操作
>>> (1,2,3) + (4,5)
(1, 2, 3, 4, 5)
>>> (1,2,3) * 2
(1, 2, 3, 1, 2, 3)
特例:当括号内只有一个元素的时候,会认为()是计算中的括号,而非元祖的定界符
>>> type((1))
<class 'int'>
>>> type(('hello'))
<class 'str'>
如何定义一个只有一个元素的元祖
>>> (1,)
(1,)
>>> type((1,))
<class 'tuple'>
>>> len((1,))
1
如何定义一个空元祖
>>> ()
()
>>> type(())
<class 'tuple'>
4,序列总结
str, list, tuple三种都是序列的类型,具有如下特点:
- 都可以通过序号来访问,进行切片操作[-1:]
- 都可以进行 + 和 * 数字的计算
判断元素是否在序列中
>>> 1 in [1,2,3]
True
>>> 1 in (1,2,3)
True
>>> 1 in '1,2,3'
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: 'in <string>' requires string as left operand, not int
>>> '1' in '1,2,3'
True
NOT IN
>>> 'python' not in ['java', 'php']
True
函数操作
>>> len([1,2,3])
3
>>> len((1,2,3))
3
>>> len('1,2,3')
5
# 字符串判断大小用ASCII码
>>> ord('w')
119
>>> max('hello world')
'w'
>>> max([1,2,3])
3
>>> max((1,2,3))
3
>>> max('123')
'3'
>>> min([1,2,3])
1
5,集合
集合的标志符是set,特点是无序、唯一
>>> type({1,2,3})
<class 'set'>
>>> {1,2,3,3,3,4}
{1, 2, 3, 4}
集合跟序列不同,不支持相加
>>> {1,2,3} + {4}
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unsupported operand type(s) for +: 'set' and 'set'
集合的操作类似PHP的数组,支持差集、并集和交集
# 差集
>>> {1,2,3,4} - {1,2}
{3, 4}
# 交集
>>> {1,2,3} & {2,5}
{2}
# 并集
>>> {1,2,3} | {4,5}
{1, 2, 3, 4, 5}
如何创建一个空集合
>>> set()
set()
>>> type(set())
<class 'set'>
>>> len(set())
0
6,字典 dict
字典的标志符是dict,格式{key:value, key:value ... },也是无序的
>>> {type({1:1,2:2})}
{<class 'dict'>}
字段的访问,下标必须跟key一致
>>> {'Q':'急速冷却', 'R':'天火', 'Z':'吹风'}[Q]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Q' is not defined
>>> {'Q':'急速冷却', 'R':'天火', 'Z':'吹风'}['Q']
'急速冷却'
字典的key不允许重复,否则会过滤掉
>>> {'A':'我艹','A':'我艹', 'B':'我屮艸芔茻'}
{'A': '我艹', 'B': '我屮艸芔茻'}
字典的key必须是不可变的类型(数字,字符串,元祖),value可以是任意类型
>>> {1:1,'2':'二',(3):[3]}
{1: 1, '2': '二', 3: [3]}
>>> type({1:1,'2':'二',(3):[3]})
<class 'dict'>
如何创建一个空字典
>>> {}
{}
>>> type({})
<class 'dict'>