Python3 基本数据类型
Python 中的变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建。
在 Python 中,变量就是变量,它没有类型,我们所说的"类型"是变量所指的内存中对象的类型。
等号(=)用来给变量赋值。
等号(=)运算符左边是一个变量名,等号(=)运算符右边是存储在变量中的值。例如:
实例(Python 3.0+)
#!/usr/bin/python3
counter = 100 # 整型变量
miles = 1000.0 # 浮点型变量
name = "runoob" # 字符串
print (counter)
print (miles)
print (name)
执行以上程序会输出如下结果:
100
1000.0
runoob
一 标准数据类型
Python3 中有六个标准的数据类型:
-
Number(数字)
-
String(字符串)
-
List(列表)
-
Tuple(元组)[tʌpl]
-
Set(集合)
-
Dictionary(字典)[ˈdɪkʃəneri]
Number(数字)Python3 数字类型分为
- int
- float
- bool
- complex(复数)
在Python 3里,只有一种整数类型 int,表示为长整型,没有 python2 中的 Long。
像大多数语言一样,数值类型的赋值和计算都是很直观的。
内置的 type() 函数可以用来查询变量所指的对象类型。
>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>
此外还可以用 isinstance 来判断:
>>>a = 111
>>> isinstance(a, int)
True
>>>
isinstance 和 type 的区别在于:
class A:
pass
class B(A):
pass
isinstance(A(), A) # returns True
type(A()) == A # returns True
isinstance(B(), A) # returns True
type(B()) == A # returns False
区别就是:
-
type()不会认为子类是一种父类类型。
-
isinstance()会认为子类是一种父类类型。
注意:
在 Python2 中是没有布尔型的,它用数字 0 表示 False,用 1 表示 True。
Python3 中,把 True 和 False 定义成关键字了,但它们的值还是 1 和 0,它们可以和数字相加。
当你指定一个值时,Number 对象就会被创建:
var1 = 1
var2 = 10
您也可以使用del语句删除一些对象引用。
del语句的语法是:
del var1[,var2[,var3[....,varN]]]]
您可以通过使用del语句删除单个或多个对象。例如:
del var #不要将关键字命名为变量 否则会有问题 如 str
del var_a, var_b
注意:
-
Python可以同时为多个变量赋值,
#如: a, b = 1, 2 #对称赋值 a, b, c, d = 'love'//a=l b=c 依次类推 #统一赋值 a = b = c = d = 10;
-
一个变量可以通过赋值指向不同类型的对象。
-
数值的除法(/)总是返回一个浮点数,要获取整数使用//操作符。
-
在混合计算时,Python会把整型转换成为浮点数。
数值类型实例
int | float | complex |
---|---|---|
10 | 0.0(.2) | 3.14j |
100 | 15.20 | 45j |
-786 | -21.9 | 9.322e-36j |
Python还支持复数,复数由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部a和虚部b都是浮点型
数值运行的函数 import match
match.ceil(x)
match.floor()
pow(x,y) | x**y 运算后的值 |
---|---|
round(x[,n]) | 返回浮点数x的四舍五入值,如给出n值,则代表舍入到小数点后的位数。 |
max(x1,x2,,,,) | 返回给定参数的最大值,参数可以为序列 |
min(x1,x2,,,,) | 返回给定参数的最小值,参数可以为序列 |
ceil(x) | 返回数字的上入整数,如math.ceil(4.1) 返回 5 |
floor() | 返回数字的下舍整数,如math.floor(4.9)返回 4 |
随机数的函数 import random
choice(seq) | 返回一个列表,元组或字符串的随机项。 seq -- 可以是一个列表,元组或字符串。 |
---|---|
choices(seq,k=1) | 返回随机的k个值 random.choices('abcdefghijklmn',k=6)) |
randrange(start,stop,step) | start -- 指定范围内的开始值,包含在范围内。 stop -- 指定范围内的结束值,不包含在范围内。 step -- 指定递增基数。 |
shuffle(list) | 将列表的所有元素随机排序 |
uniform(x,y) | 随机生成下一个实数,它在[x,y]范围内。 |
randint(1,100) | 随机整数 |
序列 字符串 列表 元组的取值方式
截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号 (+) 是字符串的连接符, 星号 (*) 表示复制当前字符串,紧跟的数字为复制的次数。
二 String(字符串)
Python中的字符串用单引号(')或双引号(")括起来,同时使用反斜杠()转义特殊字符。
字符串的截取的语法格式如下:
变量[头下标:尾下标]
索引值以 0 为开始值,-1 为从末尾的开始位置。
加号 (+) 是字符串的连接符, 星号 (*) 表示复制当前字符串,紧跟的数字为复制的次数。实例如下:
实例
str = 'Runoob'
print (str) # 输出字符串
print (str[0:-1]) # 输出第一个到倒数第二个的所有字符
star[-3:-1] # 输出倒数第三个至倒数第一个的字符
print (str[0]) # 输出字符串第一个字符
print (str[2:5]) # 输出从第三个开始到第五个的字符
print (str[2:]) # 输出从第三个开始的后的所有字符
print (str[:]) # 输出所有
print (str[:5]) # 截取到5为止
print (str * 2) # 输出字符串两次
print (str + "TEST") # 连接字符串
str[-1:1:-1] #范围查询,步长默认是1,如果步长为正,从左往右查询,如果步长为负,从右往左
str[-1::-1] #输出所有 倒着输出
注意:
- 反斜杠可以用来转义,使用r可以让反斜杠不发生转义。
- 字符串可以用+运算符连接在一起,用*运算符重复。
- Python中的字符串有两种索引方式,从左往右以0开始,从右往左以-1开始。
- Python中的字符串不能改变。
字符串的转义字符
在需要在字符中使用特殊字符时,python用反斜杠()转义字符。如下表:
\(在行尾时) | 续行符 | \\ | 反斜杠符号 |
---|---|---|---|
' | 单引号 | " | 双引号 |
\n | 换行 | \r | 回车 |
\t | 水平制表符(4个空格) |
续行符
myStr = 'abcde\
f'
格式化输出
%d %s %f 占位符
精确到小数点后3位,会四舍五入
print("num = %d, str19 = %s, f = %.3f" % (num, str19, f))
#% '%%'输出一个单一的'%'
print("%-10.2f"%22.11111,'asdasd') #10 为10个长度 用做左对齐
print("%10.2f"%22.11111,'asdasd') #10 为10个长度 用做右对齐
当值为元组的时候则会报错
"hi there %s" % name
但是,如果name恰好是(1,2,3),它将会抛出一个TypeError异常.为了保证它总是正确的,你必须这样做:
"hi there %s" % (name,) # 提供一个单元素的数组而不是一个参数
使用format进行格式化
print("字符串{} 浮点数{} 整数{}".format('asd',11.1,8))
isnumeric() [nu:'merɪk] | 如果字符串中只包含数字字符,则返回 True,否则返回 False |
---|---|
splitStr.join(Str) | 以指定字符串作为分隔符,将 seq 中所有的元素(的字符串表示)合并为一个新的字符串 |
center(self,width,fillchar) | 以原始字符串为中心生成新字符串 |
ljust(width,[str]) | 返回一个原字符串左对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
rjust(width,[str]) | 返回一个原字符串右对齐,并使用 fillchar 填充至长度 width 的新字符串,fillchar 默认为空格。 |
lstrip()/rstrip()/strip | 截掉字符串左/右边的空格或指定字符/俩侧 |
max(str)/min(str) | 返回字符串 str 中最大/小的字母。 |
chr(x) | 将一个整数转换为一个字符 |
ord(x) | 将一个字符转换为它的整数值 |
myStr.replace(old,new[,max]) | 把 将字符串中的 str1 替换成 str2,如果 max 指定,则替换不超过 max 次。 |
find(str,beg=0,end=len)/index(str) | 查找某个字符出现的位置 从左侧开始查找 查到返回索引值 查不到返回-1 /查到返回索引 查不到报错 |
rfind(str,beg=0,end=len)/rindex(str) | 查找某个字符出现的位置 从右侧开始查找 查到返回索引值 查不到返回-1 /右查到返回索引 查不到报错 |
split(str=''[,num]) | num=string.count(str)) 以 str 为分隔符拆分字符串为列表,如果 num 有指定值,则仅截取 num 个子字符串 |
swapcase() | 将字符串中大写转换为小写,小写转换为大写 |
upper() | 转换字符串中的小写字母为大写 |
lower() | 转换字符串中的写字母为小写 |
splitlines(True) | 以回车换行为条件分割,参数用来设置是否保留换行 |
三 List(列表)
List(列表) 是 Python 中使用最频繁的数据类型。
列表是写在方括号([])之间、用逗号分隔开的元素列表。
>>>a = [1, 2, 3, 4, 5, 6]
>>> a[-2] #5
>>> a[0] = 9 #修改值
>>> a[2:5] = [13, 14, 15]
>>> a
[9, 2, 13, 14, 15, 6]
>>> a[2:5] = [] # 删除
>>> del a[2] # 删除 索引值为2的值
>>> a.clear() # 清空列表
>>> a
[9, 2, 6]
#添加值
a.append(3) #添加一个值
a.extend([1,2,3,4]) #添加多个值
多维列表
mylist = [[1,2,3], [4,5,6], [7,8,9]]
多维列表的取值
mylist[0] #[1,2,3]
mylist[0][0] #1
多维列表的遍历
for i in mylist:
for x in i:
print(x)
注意
- 与Python字符串不一样的是,列表中的元素是可以改变的:
- List写在方括号之间,元素用逗号隔开。
- 和字符串一样,list可以被索引和切片。
- List可以使用+操作符进行拼接。
- List中的元素是可以改变的。
常用列表的相关函数
len() | 计算列表的长度 |
---|---|
list.count() | 统计某个元素在列表中出现的次数 |
append | 向列表中添加一个值 |
list.extend() | 在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表) |
list.index() | 从列表中找出某个值第一个匹配项的索引位置 |
list.insert(index,obj) | 将对象插入列表 |
list.pop() | 移除列表中的一个元素(默认最后一个元素),并且返回该元素的值 |
list.remove() | 移除列表中某个值的第一个匹配项 |
list.reverse() | 反向列表中元素 |
list.sort() | 对原列表进行排序 |
list.clear() | 清空列表 |
list.copy() | 复制列表 |
copy.deepcopy() | 深拷贝 拷贝对象及其子对象 |
copy.copy() | 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象 |
四 Tuple(元组)
元组(tuple)与列表类似,不同之处在于元组的元素不能修改。元组写在小括号(())里,元素之间用逗号隔开。
元组与字符串类似,可以被索引且下标索引从0开始,-1 为从末尾开始的位置。也可以进行截取(看上面,这里不再赘述)。
注意
- 与字符串一样,元组的元素不能修改。
- 元组也可以被索引和切片,方法一样。
- 注意构造包含0或1个元素的元组的特殊语法规则。 空元祖() 一个值的元祖(1,)
- 元组也可以使用+操作符进行拼接。
- 元组的个别值不可以删除 但我们可以使用del语句来删除整个元组
五 Set(集合)
集合(set)是一个无序不重复元素的序列。
基本功能是进行成员关系测试和删除重复元素
可以使用大括号 { } 或者 set() 函数创建集合,
注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
# 成员测试
if 'Rose' in student :
print('Rose 在集合中')
else :
print('Rose 不在集合中')
# set可以进行集合运算
a = set('abr')
b = set('ala')
print(a)
print(a - b) # a和b的差集
print(a | b) # a和b的并集
print(a & b) # a和b的交集
print(a ^ b) # a和b中不同时存在的元素
六 Dictionary (字典)
语法格式: {健:值,健:值...}
字典的取值
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['name']) # 输出键为 'name' 的值
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键
print (tinydict.values()) # 输出所有值
字典值的添加
当给原字典 添加了一个不存在的健对应的值的时候 则为添加
myDict = {'name':'张三'}
myDict['age'] = 18 #将age:18添加到 字典 myDict里
字典的值的修改
当给字典已存在的键 赋新的值的时候 是对键key的值进行修改
myDict = {'name':'张三'}
myDict['name'] = '李四' #将健key 为name的 值修改为 李四
字典的值的删除
通过字典的唯一的健进行删除
myDict = {'name':'张三'}
del myDict['name'] #将健key 为name的 健值对删除
删除字典
del 字典名
字典名.clear() #清空整个字典
del myDict['name']
构造函数 dict() 可以直接从键值对序列中构建字典如下:
>>>dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
{'Taobao': 3, 'Runoob': 1, 'Google': 2}
>>> {x: x**2 for x in (2, 4, 6)}
{2: 4, 4: 16, 6: 36}
>>> dict(Runoob=1, Google=2, Taobao=3)
{'Taobao': 3, 'Runoob': 1, 'Google': 2}
#想使用函数 dict 转换成 字典 前提是 必须键值对 的形式
myList = [('name', '张三'), ('age', 18), ('sex', '男'), ('hobby', '写代码')]
myList = [{'name', '张三'}, {'age', 18}, {'sex', '男'}, {'hobby', '写代码'}]
myList = [['name', '张三'], ['age', 18], ['sex', '男'], ['hobby', '写代码']]
字典的遍历
for i in mydict:
print(i) #返回的都是键
for x,y in mydict.items(): #items() 函数以列表返回可遍历的(键, 值) 元组数组。
print(x,y) #返回键 值
注意:
- 字典是一种映射类型,它的元素是键值对。
- 字典的关键字必须为不可变类型,且不能重复。
- 创建空字典使用 { }。
- 列表是有序的对象结合,字典是无序的对象集合。
- 两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
- 字典是一种映射类型,字典用"{ }"标识,它是一个无序的键(key) : 值(value)对集合。
- 在同一个字典中,键(key)必须是唯一的。
字典常用的函数
mydict.items() | 以列表返回可遍历的(键, 值) 元组数组 |
---|---|
mydict.keys()/mydict.values() | 以列表返回一个字典所有的键/以列表返回一个字典所有的值 |
mydict.update(dict2) | 把字典dict2的键/值对更新到dict里 |
mydict.pop(key) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。 |
mydict.popitem() | 随机返回并删除字典中的一对键和值。 返回一个键值对(key,value)形式。3.6(删除字典中最后一个键值对) |
mydict.copy() | 返回一个字典的浅复制 |
deepcopy() | 深复制 |
myDict.clear() | 清空字典 |
Get | 通过键获取值 |
import copy
myDict = {'a':{'c':'d'}}
b = copy.copy(myDict)
myDict['a']['c'] = 'f'
print(myDict)
print(b)
七 Python数据类型转换
函数 | 描述 |
---|---|
int(x [,base]) | 将x转换为一个整数 |
float(x) | 将x转换到一个浮点数 |
complex(x [,y]) | 将 x 和 y 转换到一个复数,实数部分为 x,虚数部分为 y。x 和 y 是数字表达式。 |
str(x) | 将对象 x 转换为字符串 |
eval(str) | 用来计算在字符串中的有效Python表达式,并返回一个对象 |
tuple(s) | 将序列 s 转换为一个元组 |
list(s) | 将序列 s 转换为一个列表 |
set(s) | 转换为可变集合 |
dict(d) | 创建一个字典。d 必须是一个序列 (key,value)元组。 |
bool | 转换为bool值 |
网友评论