python3中有六个标准数据类型,分别是:
number——数字
string——字符串
list——列表
tuple——元组
set——集合
dictiontry——字典
其中六大标准数据类型也分为可变数据与不可变数据:
可变数据类型:list(列表),dictiontry(字典),set(集合)
不可变数据类型:number(数字),string(字符串),tuple(列表)
接下来分别对这六大数据类型需要注意的点进行阐述。
Python3 支持 int、float、bool、complex(复数)。
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
像大多数语言一样,数值类型的赋值和计算都是很直观的。
内置的 type() 函数可以用来查询变量所指的对象类型。
isinstance函数也可以用于判断,示例如下:
>>>a = 1
>>>isinstance(a,int)
True
此时会返回一个布尔数值。
type函数和isinstance函数的主要区别在于:
type()不会认为子类是一个父类类型
isinstance会认为子类是一种父类类型
实例如下:
>>> class A:
... pass
...
>>> class B(A):
... pass
...
>>> isinstance(A(), A)
True
>>> type(A()) == A
True
>>> isinstance(B(), A)
True
>>> type(B()) == A
False
注意:Python3 中,bool 是 int 的子类,True 和 False 可以和数字相加, True==1、False==0 会返回 True,但可以通过 is 来判断类型。
>>> 5 + 4 # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7 # 乘法
21
>>> 2 / 4 # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32
int | float | complex |
---|---|---|
10 | 0.0 | 3.14j |
100 | 15.20 | 45.j |
-786 | -21.9 | 9.322e-36j |
080 | 32.3e+18 | .876j |
-0490 | -90. | -.6545+0J |
-0x260 | -32.54e100 | 3e+26J |
0x69 | 70.2E-12 | 4.53e-7j |
这里我们在提到一个函数用于求数值型数据的绝对值——abs函数,实例如下:
>>> x = -4
>>> abs(x)
4
abs函数会返回所输入数值的绝对值形式
注意:当你在abs函数中输入的值为复数时,abs函数会返回该复数的模。
Python中的字符串用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符。
字符串的截取的语法格式如下:
变量[头下标;尾下标]
索引以0开始值,而-1为尾部的开始值。
加号 + 是字符串的连接符, 星号 * 表示复制当前字符串,与之结合的数字为复制的次数。
实例如下。
str = 'Runoob'
print (str) # 输出字符串
print (str[0:-1]) # 输出第一个到倒数第二个的所有字符
print (str[0]) # 输出字符串第一个字符
print (str[2:5]) # 输出从第三个开始到第五个的字符
print (str[2:]) # 输出从第三个开始的后的所有字符
print (str * 2) # 输出字符串两次,也可以写成 print (2 * str)
print (str + "TEST") # 连接字符串
执行上述代码可获得结果如下:
Runoob
Runoo
R
noo
noob
RunoobRunoob
RunoobTEST
python中使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串。实例如下:
>>> print('Ru\noob')
Ru
oob
>>> print(r'Ru\noob')
Ru\noob
>>>
其它的转义字符:
转义字符 | 说明 |
---|---|
\n | 换行符,将光标位置移到下一行开头。 |
\r | 回车符,将光标位置移到本行开头。 |
\t | 水平制表符,也即 Tab 键,一般相当于四个空格。 |
\a | 蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。 |
\b | 退格(Backspace),将光标位置移到前一列。 |
\\ | 反斜线 |
\' | 单引号 |
\" | 双引号 |
\ | 在字符串行尾的续行符,即一行未完,转到下一行继续写。 |
实例如下:
>>> str = 'ice cream'
>>> str
ice cream
>>> str.title()
Ice Cream
实例如下:
>>> str = 'ice cream'
>>> str
ice cream
>>> str = str.upper()
>>> str
ICE CREAM
>>> str = str.lower()
>>> str
ice cream
实例如下:
>>> str = ' jack '
>>> str
jack
>>> str.rstrip()
jack
实例如下:
>>> str = ' jack '
>>> str
jack
>>> str.lstrip()
jack
实例如下:
>>> str = ' jack '
>>> str
jack
>>> str.strip()
jack
List(列表) 是 Python 中使用最频繁的数据类型。
列表可以完成大多数集合类的数据结构实现。列表中元素的类型可以不相同,它支持数字,字符串甚至可以包含列表(所谓嵌套)。
列表是写在方括号 [] 之间、用逗号分隔开的元素列表。
和字符串一样,列表同样可以被索引和截取,列表被截取后返回一个包含所需元素的新列表。
列表截取的语法格式如下:
变量[头下标;尾下标]
与此同时,列表还可以按照不同的步长进行切片,实例如下:
>>> list = [1,2,3,4,5,6,7,8,9,10]
>>> list[::2] #以2为步长对整个列表进行切片
[1,3,5,7,9]
>>> list[:5:2] #以2为步长对list[:5]进行切片
[1,3,5]
注意:如果你没有指定起始索引或结束索引的打算,直接跳过该索引的输入即可。
与字符串的截取相同,列表索引的起始值也是0。
加号 + 是列表连接运算符,星号 * 是重复操作。如下实例:
list = [ 'abcd', 786 , 2.23, 'runoob', 70.2 ]
tinylist = [123, 'runoob']
print (list) # 输出完整列表
print (list[0]) # 输出列表第一个元素
print (list[1:3]) # 从第二个开始输出到第三个元素
print (list[2:]) # 输出从第三个元素开始的所有元素
print (tinylist * 2) # 输出两次列表
print (list + tinylist) # 连接列表
执行上述代码后会有如下输出:
['abcd', 786, 2.23, 'runoob', 70.2]
abcd
[786, 2.23]
[2.23, 'runoob', 70.2]
[123, 'runoob', 123, 'runoob']
['abcd', 786, 2.23, 'runoob', 70.2, 123, 'runoob']
另外,在列表中还可以通过索引来改变该索引位置上的数值或字符串,实例如下
>>> list = [1,2,3,4]
>>> list
[1,2,3,4]
>>> list[0] = 2
>>> list
[2,2,3,4]
同时,python也为修改列表提供了许多方法,接下来会列出几种比较常用的方法
你可以对列表的数据项进行修改或更新,你也可以使用 append() 方法来添加列表项,实例如下:
>>> list = [1,2,3,4]
>>> list
[1,2,3,4]
>>> list.append(5) # 仅修改当前列表,没有返回值
>>> list
[1,2,3,4,5]
append函数只能往列表的末端添加元素,如果想灵活地在列表任意位置插入元素,不妨试试接下来介绍的insert函数
insert函数中有两个参数,第一个是要插入位置的索引,第二个是所要插入的元素,实例如下:
>>> list = [1,2,3,4,5]
>>> list
[1,2,3,4,5]
>>> list.insert(0,5) #在原列表上修改,没有返回值
>>> list
[5,1,2,3,4,5]
del函数可以对指定列表进行操作,删除一个或多个连续元素,实例如下:
>>> list = [1,2,3,4,5]
>>> list
[1,2,3,4,5]
#删除一个元素
>>> del list[0]
>>> list
[2,3,4,5]
#删除多个连续元素
>>> del list[1:3]
>>> list
[1,4,5]
remove() 函数用于移除列表中某个值的第一个匹配项,实例如下:
>>> list = ['a','b','c','d','e','f']
>>> list
['a','b','c','d','e','f']
>>> list.remove('d')
>>> list
['a','b','c','e','f']
同样的,remove函数没有返回值
pop()用于删除并返回列表中的一个元素(默认为最后一个元素),实例如下:
>>> list = [1,2,3,,4,5]
>>> list
[1,2,3,,4,5]
>>> num_1 = list.pop()
>>> num_1
5
>>> num_2 = list.pop(0)
>>> num_2
1
sort函数可以永久性的改变列表的排序,默认为正序(数字则从小到大,字母则从a到z)
sorted函数可以暂时生成一个临时的列表,只改变这个临时列表的排序,不影响原列表的排序,默认为正序
注意:1)sort函数没有返回值,而sorted函数会返回临时生成的列表
2)两个函数均有一个相同的参数reverse(逆转),默认为reverse = Flase,即默认升序
3)如果需要用到sorted函数的逆转,在sorted函数的参数中加入reverse即可,
例如:list.sorted(reverse = True)
实例如下:
>>> list = [1,2,3,4]
>>> list
[1,2,3,4]
>>> list.reverse()
[4,3,2,1]
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。
元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取(看上面,这里不再赘述)。其实,可以把字符串看作一种特殊的元组。
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。
构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
注意:
1) 与字符串一样,元组的元素不能修改。
2)元组也可以被索引和切片,方法一样。
3)注意构造包含 0 或 1 个元素的元组的特殊语法规则。
4)元组也可以使用+操作符进行拼接。
集合(set)是一个无序的不重复元素序列。
可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。实例如下:
parame = {value01,value02,...}
或者
set(value)
实例如下:
>>> basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
>>> print(basket) # 这里演示的是去重功能
{'orange', 'banana', 'pear', 'apple'}
>>> 'orange' in basket # 快速判断元素是否在集合内
True
>>> 'crabgrass' in basket
False
>>> # 下面展示两个集合间的运算.
...
>>> a = set('abracadabra')
>>> b = set('alacazam')
>>> a
{'a', 'r', 'b', 'c', 'd'}
>>> a - b # 集合a中包含而集合b中不包含的元素
{'r', 'd', 'b'}
>>> a | b # 集合a或b中包含的所有元素
{'a', 'c', 'r', 'd', 'b', 'm', 'z', 'l'}
>>> a & b # 集合a和b中都包含了的元素
{'a', 'c'}
>>> a ^ b # 不同时包含于a和b的元素
{'r', 'd', 'b', 'm', 'z', 'l'}
add函数可以把元素添加到目标集合中,假如元素已经存在于目标集合中,则不执行任何操作。
实例如下:
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}
remove函数可以移除目标集合中的元素,假如目标集合中不存在所要移除的元素,则会报错。
实例如下:
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.remove("Taobao")
>>> print(thisset)
{'Google', 'Runoob'}
>>> thisset.remove("Facebook") # 不存在会发生错误
Traceback (most recent call last):
File "", line 1, in
KeyError: 'Facebook'
>>>
discard函数可以移除目标集合中的元素,假如目标集合中不存在所要移除的元素,则不执行任何操作。
实例如下:
>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook") # 不存在不会发生错误
>>> print(thisset)
{'Taobao', 'Google', 'Runoob'}
注意:remove函数与discard函数最明显的区别是,当目标集合中不存在所要删除的元素时,remove函数会报错,而discard函数不会报错。
pop函数可以删除目标集合中随机一个元素,并返回这个元素。
实例如下:
>>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
>>> thisset.pop()
Runoob
注意:由于集合具有无序性,因此对集合使用pop函数时,pop函数会先将该集合中的元素随机排列,然后再取排列好中的集合的第一个元素进行操作,这也是pop函数用于集合时所体现出的随机性的由来。
clear函数可以删除目标集合中所有元素。
实例如下:
>>> set = {1,2,3,4}
>>> set
{1,2,3,4}
>>> set.clear()
>>> set
set()
其它方法
add() | 为集合添加元素 |
clear() | 移除集合中的所有元素 |
copy() | 拷贝一个集合 |
difference() | 返回多个集合的差集 |
difference_update() | 移除集合中的元素,该元素在指定的集合也存在。 |
discard() | 删除集合中指定的元素 |
intersection() | 返回集合的交集 |
intersection_update() | 返回集合的交集。 |
isdisjoint() | 判断两个集合是否包含相同的元素,如果没有返回 True,否则返回 False。 |
issubset() | 判断指定集合是否为该方法参数集合的子集。 |
issuperset() | 判断该方法的参数集合是否为指定集合的子集 |
pop() | 随机移除元素 |
remove() | 移除指定元素 |
symmetric_difference() | 返回两个集合中不重复的元素集合。 |
symmetric_difference_update() | 移除当前集合中在另外一个指定集合相同的元素,并将另外一个指定集合中不同的元素插入到当前集合中。 |
union() | 返回两个集合的并集 |
update() | 给集合添加元素 |
字典是另一种可变容器模型,且可存储任意类型对象。也可以理解成字典里储存着很多对键值对。
字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:
d = {key1 : value1, key2 : value2, key3 : value3 }
键必须是唯一的,但值则不必。
值可以取任何数据类型,如字符串,数字,列表等,但键必须是不可变的。
一个简单的字典实例:
tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}
注意:字典有一个特性,它不允许同一个键被赋值两次,如果出现了这种情况,字典会认为两次赋值里第二次赋值才是最终赋值,因此它会保存第二次赋值作为该键的值。
把相应的键放入到方括号中,如下实例:
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
print ("tinydict['Name']: ", tinydict['Name'])
print ("tinydict['Age']: ", tinydict['Age'])
输出如下:
tinydict['Name']: Runoob
tinydict['Age']: 7
如果在目标字典中找不到对应的键,则会报错。
向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对,实例如下:
tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
tinydict['Age'] = 8 # 更新 Age
tinydict['School'] = "GDOU" # 添加信息
print ("tinydict['Age']: ", tinydict['Age'])
print ("tinydict['School']: ", tinydict['School'])
输出如下:
tinydict['Age']: 8
tinydict['School']: GDOU
del函数可以删除目标字典或者删除目标字典中的一个键值对,删除键值对时,只用删除键就可以做到删除整个键值对的效果了,实例如下:
>>> dic = {'a':1,'b':2,'c':3}
>>> del dic['b']
>>> dic
{'a':1,'c':2}
序号 | 函数及描述 |
---|---|
1 | dict.clear() 删除字典内所有元素 |
2 | dict.copy() 返回一个字典的浅复制 |
3 | dict.fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | dict.get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值 |
5 | key in dict 如果键在字典dict里返回true,否则返回false |
6 | dict.items() 以列表返回一个视图对象 |
7 | dict.keys() 返回一个视图对象 |
8 | dict.setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
9 | dict.update(dict2) 把字典dict2的键/值对更新到dict里 |
10 | dict.values() 返回一个视图对象 |
11 | pop(key[,default]) 删除字典 key(键)所对应的值,返回被删除的值。 |
12 | popitem() 返回并删除字典中的最后一对键和值。 |