python-基本数据类型
- 声明
变量不需要声明。每个变量在使用前都必须赋值,变量赋值以后该变量才会被创建
- 赋值
可以使用逗号来进行多变量同时赋值
a, b, c = 1, 2, "runoob"
- 标准数据类型
number(数字):
# 创建number对象
var1 = 1
var2 = 10
# 删除number对象
del var
del var_a, var_b
# 进行基本的运算
5 + 4 # 加法
# 9
4.3 - 2 # 减法
# 2.3
3 * 7 # 乘法
# 21
2 / 4 # 除法,得到一个浮点数
# 0.5
2 // 4 # 除法,得到一个整数
# 0
17 % 3 # 取余
# 2
2 ** 5 # 乘方
# 32
数值的除法包含两个运算符:/ 返回一个浮点数,// 返回一个整数
在混合计算时,Python会把整型转换成为浮点数
string(字符串):
用单引号 ' 或双引号 " 括起来,同时使用反斜杠 \ 转义特殊字符
截取的语法格式:变量[头下标:尾下标]

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") # 连接字符串
反斜杠(\)可以作为续行符,表示下一行是上一行的延续。也可以使用 """...""" 或者 '''...''' 跨越多行
字符串不能被改变。向一个索引位置赋值,比如word[0] = 'm'会导致错误
list(列表):
写在方括号 [] 之间、用逗号分隔开的元素列表
截取的语法格式如下:变量[头下标:尾下标]

使用切片可以在间隔位置插入中间元素
name = list('perl')
name[1:] = list('ython') #从1位置(包括1位置)开始替换
print(name)
# ['p', 'y', 't', 'h', 'o', 'n']
number = [1,5]
与字符串不一样的是,列表中的元素是可以改变的(也即可以直接通过索引来修改值)
不能给不存在的索引赋值,所以在赋值前,要确保该索引位置已经初始化
可以使用+操作符进行拼接
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) # 连接列表
此处的乘法仍然输出的是一个增加了长度的列表
列表截取可以接收第三个参数,参数作用是截取的步长

第三个参数为负数表示逆向读取,以下实例用于翻转字符串
print (list[2])
# 2.23
print (list[2:3])
# [2.23]
tuple(元组):
元组写在小括号 () 里,元素之间用逗号隔开
元组的元素不能修改,这也意味这元组的元素不可通过索引直接修改
虽然tuple的元素不可改变,但它可以包含可变的对象,比如list列表
tuple = ( 'abcd', 786 , 2.23, 'runoob', 70.2 )
tinytuple = (123, 'runoob')
print (tuple) # 输出完整元组
print (tuple[0]) # 输出元组的第一个元素
print (tuple[1:3]) # 输出从第二个元素开始到第三个元素
print (tuple[2:]) # 输出从第三个元素开始的所有元素
print (tinytuple * 2) # 输出两次元组
print (tuple + tinytuple) # 连接元组
构造包含 0 个或 1 个元素的元组比较特殊,所以有一些额外的语法规则
tup1 = () # 空元组
tup2 = (20,) # 一个元素,需要在元素后添加逗号
构建一个元素的元组,如果不使用逗号,会被识别为添加了强调符号(括号)的单个元素
函数返回多个值的时候,是以元组的形式返回的
函数还可以接收可变长参数,比如以 "*" 开头的的参数名,会将所有的参数收集到一个元组上
字符串,列表,元组都属于序列,三者具有一些共同的属性(索引和切片)
set(集合):
使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典
parame = {value01,value02,...}
set(value)
集合是无重复元素的序列,会自动去除重复元素
字典因为其key唯一性,所以也不会出现相同元素
集合可以进行元素去重,成员测试,集合运算
# 元素去重
sites = {'Google', 'Taobao', 'Runoob', 'Facebook', 'Zhihu', 'Baidu'}
print(sites) # 输出集合,重复的元素被自动去掉
# 成员测试
if 'Runoob' in sites :
print('Runoob 在集合中')
else :
print('Runoob 不在集合中')
# 集合运算
print(a - b) # a 和 b 的差集
print(a | b) # a 和 b 的并集
print(a & b) # a 和 b 的交集
print(a ^ b) # a 和 b 中不同时存在的元素
dictionary(字典):
列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取
用 { } 标识,它是一个无序的 键(key) : 值(value) 的集合
也可以使用dict()函数来构建字典
dict([('Runoob', 1), ('Google', 2), ('Taobao', 3)])
# {'Runoob': 1, 'Google': 2, 'Taobao': 3}
{x: x**2 for x in (2, 4, 6)}
# {2: 4, 4: 16, 6: 36}
dict(Runoob=1, Google=2, Taobao=3)
# {'Runoob': 1, 'Google': 2, 'Taobao': 3}
键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的
tinydict = {'name': 'runoob','code':1, 'site': 'www.runoob.com'}
print (dict['one']) # 输出键为 'one' 的值
print (dict[2]) # 输出键为 2 的值
print (tinydict) # 输出完整的字典
print (tinydict.keys()) # 输出所有键
print (tinydict.values()) # 输出所有值
- 数据类型转换函数
int(x, base=10),x为字符串或者数字,base为进制
返回整型数据
int() # 不传入参数时,得到结果0
# 0
int(3)
# 3
int(3.6) #这种取整是直接截断小数
# 3
int('12',16) # 如果是带参数base的话,12要以字符串的形式进行输入,12 为16进制
# 18
int('0xa',16)
# 10
int('10',8)
# 8
float([x]),x为整数或者字符串
返回浮点数
float(1)
# 1.0
float(112)
# 112.0
float(-123.6)
# -123.6
float('123') # 字符串
# 123.0
complex([real[, imag]]),reak指 int, long, float或字符串,imag为int, long, float;
返回一个复数
complex(1, 2) #两者分别是实部和虚部
# (1 + 2j)
complex(1) # 数字
# (1 + 0j)
complex("1") # 当做字符串处理。如果第一个参数为字符串,则不需要指定第二个参数
# (1 + 0j)
# 注意:这个地方在"+"号两边不能有空格,也就是不能写成"1 + 2j",应该是"1+2j",否则会报错
complex("1+2j")
# (1 + 2j)
str(object=''),object为对象
返回对象的string格式
s = 'RUNOOB'
str(s)
# 'RUNOOB'
dict = {'runoob': 'runoob.com', 'google': 'google.com'};
str(dict)
# "{'google': 'google.com', 'runoob': 'runoob.com'}" #其直接在字典的基础上加上了引号构成了字符串
repr(object),object为对象
返回对象的sring格式
s = 'RUNOOB'
repr(s)
# "'RUNOOB'"
dict = {'runoob': 'runoob.com', 'google': 'google.com'};
repr(dict)
# "{'google': 'google.com', 'runoob': 'runoob.com'}"
str()打印到终端,不带引号
repr()打印到终端,带引号,也就是原样输出,保持在代码中的样子
print(str('123456789'))
# 123456789
print(repr('123456789'))
# '123456789'
eval(expression[, globals[, locals]]),expression为表达式,globals为全局命令空间,locals为局部命名空间(需要提供一个字典)
返回表达式计算结果
x = 7
eval( '3 * x' )
# 21
eval('pow(2,2)')
# 4
eval('2 + 2')
# 4
n=81
eval("n + 4")
# 85
eval() 函数也可以直接用来提取用户输入的多个值
a,b=eval(input()) #用户输入值10,5,可以绑定对应值
tuple( iterable ),iterable为要替代为元组的可迭代序列
返回元组
list1= ['Google', 'Taobao', 'Runoob', 'Baidu']
tuple1=tuple(list1)
tuple1
# ('Google', 'Taobao', 'Runoob', 'Baidu')
a={'www':123,'aaa':234}
b=tuple(a)
b
# ('www', 'aaa') # 将字段转换为元组时,只保留键
list( seq ),seq -- 要转换为列表的元组或字符串
返回列表
aTuple = (123, 'Google', 'Runoob', 'Taobao')
list1 = list(aTuple)
print ("列表元素 : ", list1)
# 列表元素 : [123, 'Google', 'Runoob', 'Taobao']
str="Hello World"
list2=list(str)
print ("列表元素 : ", list2)
#列表元素 : ['H', 'e', 'l', 'l', 'o', ' ', 'W', 'o', 'r', 'l', 'd']
set([iterable]),iterable -- 可迭代对象
返回新的集合对象
x = set('runoob')
y = set('google')
x, y
# (set(['b', 'r', 'u', 'o', 'n']), set(['e', 'o', 'g', 'l'])) # 重复的被删除
x & y # 交集
set(['o'])
x | y # 并集
# set(['b', 'e', 'g', 'l', 'o', 'n', 'r', 'u'])
x - y # 差集
# set(['r', 'b', 'u', 'n'])
dict(**kwarg),**kwarg为关键字
dict(mapping, **kwarg),mapping为元素的容器
dict(iterable, **kwarg),iterable为可迭代对象
返回一个字典
# 创建空字典,通过索引添加键值对来添加数据
dict1 = {}
dict1['firstname'] = 'ma'
dict1['lastname'] = 'yun'
# 直接通过中括号来创建字典
dict1 = {'firstname':'ma', 'lastname':'yun'}
# 通过dict函数来创建字典
dict1 = dict(firstname = 'ma', lastname = 'yun')
dict1 = dict([('firstname','ma'), ('lastname', 'yun')])
dict1 = dict((['firstname','ma'], ['lastname', 'yun']))
dict1 = dict(zip(['firstname', 'lastname'], ['ma', 'yun'])) #通过zip()函数直接创建映射
frozenset([iterable]),iterable -- 可迭代的对象,比如列表、字典、元组等等
返回新的 frozenset (冻结的集合不能再添加或者删除任何元素)对象,如果不提供任何参数,默认会生成空集合
a = frozenset(range(10)) # 生成一个新的不可变集合
a
# frozenset([0, 1, 2, 3, 4, 5, 6, 7, 8, 9])
# b = frozenset('runoob')
b
# frozenset(['b', 'r', 'u', 'o', 'n']) # 创建不可变集合
因为在集合的关系中,有集合的中的元素是另一个集合的情况,但是普通集合(set)本身是可变的,那么它的实例就不能放在另一个集合中(set中的元素必须是不可变类型)
使用frozenset,就可以将其作为集合的元素进行嵌套
chr(i),i -- 可以是10进制也可以是16进制的形式的数字
返回值是当前整数对应的 ASCII 字符
print chr(0x30), chr(0x31), chr(0x61) # 十六进制
# 0 1 a
print chr(48), chr(49), chr(97) # 十进制
# 0 1 a
ord(c),c为一个字符
返回值是对应的十进制整数
ord('a')
# 97
ord('b')
# 98
ord('c')
# 99
hex(x),x为十进制整数
返回16进制数,以字符串形式表示
hex(255)
# '0xff'
hex(-42)
# '-0x2a'
hex(1L)
# '0x1L'
hex(12)
# '0xc'
type(hex(12))
# <class 'str'> # 字符串
oct(x),x为整数
返回 8 进制字符串
oct(10)
# '0o12'
oct(20)
# '0o24'
oct(15)
# '0o17'

浙公网安备 33010602011771号