Loading

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]
    number[1:1] = [2,3,4]  #此处的1:1指的是元素之间的间隔位置,也就是1(索引0)和5(索引1)之前的位置
    print(number)
    # [1, 2, 3, 4, 5]   
 numbers[1:4] = []
 numbers
 # [1,5]    #此处可以使用索引列表来删除值,当然也可以直接使用del语句

与字符串不一样的是,列表中的元素是可以改变的(也即可以直接通过索引来修改值)

不能给不存在的索引赋值,所以在赋值前,要确保该索引位置已经初始化

可以使用+操作符进行拼接

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']
 list1 = list('Google')
 print ("列表元素 : ", list1)
 # 列表元素 :  ['G', 'o', 'o', 'g', 'l', 'e']
 # 如果是单个字符串,其会将字符串分解成单个元素
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'

 

 
 





 

 

posted @ 2020-10-19 17:05  lixin2020  阅读(151)  评论(0)    收藏  举报