Python基础——标准数据类型

python3中有六个标准数据类型,分别是:

number——数字

string——字符串

list——列表

tuple——元组

set——集合

dictiontry——字典

其中六大标准数据类型也分为可变数据与不可变数据:

可变数据类型:list(列表),dictiontry(字典),set(集合)

不可变数据类型:number(数字),string(字符串),tuple(列表)

 接下来分别对这六大数据类型需要注意的点进行阐述。

一、Number——数字

 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 来判断类型。

1.数值运算

>>> 5 + 4  # 加法
9
>>> 4.3 - 2 # 减法
2.3
>>> 3 * 7  # 乘法
21
>>> 2 / 4  # 除法,得到一个浮点数
0.5
>>> 2 // 4 # 除法,得到一个整数
0
>>> 17 % 3 # 取余
2
>>> 2 ** 5 # 乘方
32

2.数值类型实例

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函数会返回该复数的模。 

二、String——字符串

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

 1.转义字符

python中使用反斜杠 \ 转义特殊字符,如果你不想让反斜杠发生转义,可以在字符串前面添加一个 r,表示原始字符串。实例如下:

>>> print('Ru\noob')
Ru
oob
>>> print(r'Ru\noob')
Ru\noob
>>>

 其它的转义字符:

转义字符 说明
\n 换行符,将光标位置移到下一行开头。
\r 回车符,将光标位置移到本行开头。
\t 水平制表符,也即 Tab 键,一般相当于四个空格。
\a 蜂鸣器响铃。注意不是喇叭发声,现在的计算机很多都不带蜂鸣器了,所以响铃不一定有效。
\b 退格(Backspace),将光标位置移到前一列。
\\ 反斜线
\' 单引号
\" 双引号
\ 在字符串行尾的续行符,即一行未完,转到下一行继续写。

2.修改字符串的大小写

方法一:title函数(将字符串每个单词的首字母变成大写)

实例如下:

>>> str = 'ice cream'
>>> str
ice cream
>>> str.title()
Ice Cream 

方法二:upper/lower函数(将字符串中的所有字母变成大写/小写)

实例如下:

>>> str = 'ice cream'
>>> str
ice cream

>>> str = str.upper()
>>> str
ICE CREAM

>>> str = str.lower()
>>> str
ice cream

3.删除字符串中的空白部分 

方法一:rstrip函数(删除字符串末尾的空白)

实例如下:

>>> str = ' jack '
>>> str
 jack
>>> str.rstrip()
 jack

方法二:lstrip函数(删除字符串开头的空白)

实例如下:

>>> str = ' jack '
>>> str
 jack 
>>> str.lstrip()
jack 

方法三:strip函数(删除字符串两端的空白)

实例如下:

>>> str = ' jack '
>>> str
 jack 
>>> str.strip()
jack

三、List——列表

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也为修改列表提供了许多方法,接下来会列出几种比较常用的方法

1.更新列表(往目标列表中添加元素)

方法一:append函数(用于向目标列表中添加新的元素)

你可以对列表的数据项进行修改或更新,你也可以使用 append() 方法来添加列表项,实例如下:

>>> list = [1,2,3,4]
>>> list
[1,2,3,4]
>>> list.append(5) # 仅修改当前列表,没有返回值
>>> list
[1,2,3,4,5]

append函数只能往列表的末端添加元素,如果想灵活地在列表任意位置插入元素,不妨试试接下来介绍的insert函数

方法二: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]

2.删改列表(删除列表中的元素)

方法一:del函数(根据索引或切片删除目标列表的部分元素)

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函数(通过指定所要删除的元素的值来删除该元素)

 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函数(弹出列表指定索引位置的元素,并返回该元素的值)

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

3.组织列表

方法一:sort\sorted函数(可以永久\暂时改变列表的排序)

sort函数可以永久性的改变列表的排序,默认为正序(数字则从小到大,字母则从a到z)

sorted函数可以暂时生成一个临时的列表,只改变这个临时列表的排序,不影响原列表的排序,默认为正序

注意:1)sort函数没有返回值,而sorted函数会返回临时生成的列表

           2)两个函数均有一个相同的参数reverse(逆转),默认为reverse = Flase,即默认升序

           3)如果需要用到sorted函数的逆转,在sorted函数的参数中加入reverse即可,

                 例如:list.sorted(reverse = True)

方法二:reverse函数(可将列表中的元素顺序倒转)

实例如下:

>>> list = [1,2,3,4]
>>> list
[1,2,3,4]
>>> list.reverse()
[4,3,2,1]

四、Tuple——元组 

元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号 () 里,元素之间用逗号隔开。

元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取(看上面,这里不再赘述)。其实,可以把字符串看作一种特殊的元组。

虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表。

构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则:

tup1 = ()    # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号

注意:

          1) 与字符串一样,元组的元素不能修改。

          2)元组也可以被索引和切片,方法一样。

          3)注意构造包含 0 或 1 个元素的元组的特殊语法规则。

          4)元组也可以使用+操作符进行拼接。

五、Set——集合

集合(set)是一个无序的不重复元素序列。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。实例如下:

parame = {value01,value02,...}
或者
set(value)

1.集合间的运算 

实例如下:

>>> 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'}

2.集合的基本操作

方法一:add函数(用于往集合中添加元素)

add函数可以把元素添加到目标集合中,假如元素已经存在于目标集合中,则不执行任何操作。

实例如下:

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.add("Facebook")
>>> print(thisset)
{'Taobao', 'Facebook', 'Google', 'Runoob'}

方法二:remove函数(用于移除集合中的元素)

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函数(用于移除集合中的元素) 

discard函数可以移除目标集合中的元素,假如目标集合中不存在所要移除的元素,则不执行任何操作。

实例如下:

>>> thisset = set(("Google", "Runoob", "Taobao"))
>>> thisset.discard("Facebook")  # 不存在不会发生错误
>>> print(thisset)
{'Taobao', 'Google', 'Runoob'}

注意:remove函数与discard函数最明显的区别是,当目标集合中不存在所要删除的元素时,remove函数会报错,而discard函数不会报错。

方法四:pop函数 (用于随机弹出集合中的元素)

pop函数可以删除目标集合中随机一个元素,并返回这个元素。

实例如下:

>>> thisset = set(("Google", "Runoob", "Taobao", "Facebook"))
>>> thisset.pop()
Runoob

注意:由于集合具有无序性,因此对集合使用pop函数时,pop函数会先将该集合中的元素随机排列,然后再取排列好中的集合的第一个元素进行操作,这也是pop函数用于集合时所体现出的随机性的由来。

方法五:clear函数(用于清空集合) 

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() 给集合添加元素

六、Dictionary——字典

字典是另一种可变容器模型,且可存储任意类型对象。也可以理解成字典里储存着很多对键值对。

字典的每个键值 key=>value 对用冒号 : 分割,每个对之间用逗号(,)分割,整个字典包括在花括号 {} 中 ,格式如下所示:

 

d = {key1 : value1, key2 : value2, key3 : value3 }

键必须是唯一的,但值则不必。

值可以取任何数据类型,如字符串,数字,列表等,但键必须是不可变的。

一个简单的字典实例:

 

tinydict = {'name': 'runoob', 'likes': 123, 'url': 'www.runoob.com'}

注意:字典有一个特性,它不允许同一个键被赋值两次,如果出现了这种情况,字典会认为两次赋值里第二次赋值才是最终赋值,因此它会保存第二次赋值作为该键的值。 

1.访问字典里的值 

把相应的键放入到方括号中,如下实例:

tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
 
print ("tinydict['Name']: ", tinydict['Name'])
print ("tinydict['Age']: ", tinydict['Age'])

输出如下:

tinydict['Name']:  Runoob
tinydict['Age']:  7

如果在目标字典中找不到对应的键,则会报错。 

 2.修改字典

向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对,实例如下:

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函数(用于删除字典或字典中的键值对)

del函数可以删除目标字典或者删除目标字典中的一个键值对,删除键值对时,只用删除键就可以做到删除整个键值对的效果了,实例如下:

>>> dic = {'a':1,'b':2,'c':3}
>>> del dic['b']
>>> dic
{'a':1,'c':2}

3.其它方法

序号 函数及描述
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()
返回并删除字典中的最后一对键和值。

 

 

你可能感兴趣的:(python,开发语言)