《零基础上手Python爬虫系列》 - 03 Python数据类型

本篇主要为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'>
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,122评论 6 505
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,070评论 3 395
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,491评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,636评论 1 293
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,676评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,541评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,292评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,211评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,655评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,846评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,965评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,684评论 5 347
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,295评论 3 329
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,894评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,012评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,126评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,914评论 2 355

推荐阅读更多精彩内容