Python3基本数据类型

一切皆为对象,一切皆为对象的引用

6种基本数据类型

Python3中有6种基本数据类型,分别为:

  • Number(数字)
  • String(字符串)
  • List(列表)
  • Tuple(元组)
  • Set(集合)
  • Dictionary(字典)

基本类型分类

按照是否可变,可以分为两大类,即:

  • 不可变数据类型:Number、String、Tuple
  • 可变数据类型:List、Dictionary、Set

可变数据 VS 不可变数据

不可变数据类型,不允许变量的值发生变化,如果改变了变量的值,相当于是新建了一个对象,而对于相同的值的对象,在内存中则只有一个对象,内部会有一个引用计数来记录有多少个变量引用这个对象。

可变数据类型,允许变量的值发生变化,即如果对变量进行append、+=等这种操作后,只是改变了变量的值,而不会新建一个对象,变量引用的对象的地址也不会变化,不过对于相同的值的不同对象,在内存中则会存在不同的对象,即每个对象都有自己的地址,相当于内存中对于同值的对象保存了多份,这里不存在引用计数,是实实在在的对象。

# 不可变数据 VS 可变数据

>>> a = 1
>>> id(a)  # id()函数求变量的地址
1534356544

>>> b = 1
>>> id(b)
1534356544

>>> a = a + 1
>>> id(a)
1534356576

>>> a = [1, 2, 3]
>>> id(a)
1529292707976

>>> b = [1, 2, 3]
>>> id(b)
1529292708296

>>> a = a.append(4)
>>> id(a)
1529292707976

# 从上面一段代码可以得出,数据类型是否可变主要围绕改变变量值的时候其地址是否发生变化
# 修改数值地址发生变化为不可变类型
# 修改数值地址不发生变化的为可变类型

Number

Python3支持int、float、bool、complex(复数)

Python3只有一种整型,int,表示长整型

Python3中,bool也为Number,True和False关键字的值分别为1和0,可以和数值相加

>>> a, b, c, d = 20, 5.5, True, 4+3j
>>> print(type(a), type(b), type(c), type(d))  # type()函数求变量的对象类型
<class 'int'> <class 'float'> <class 'bool'> <class 'complex'>

>>> instance(a, int)  # instance()函数判断变量是否与指定类型相同
True

# type()和instance()的区别在于,type认为子类不属于父类,而instance会将子类对象也当做父类的对象

注意:

数值的除法包括了两种,/返回浮点数,而//返回整数

可以用del语句 删除一些对象引用

>>> 2 / 4
0.5

>>> 2 // 4
0

>>> a = b = c = 5
>>> del a, b

String

Python3中使用单引号'或者双引号"括起来

>>> a = 'I am a string'
>>> b = "I am a string too"

字符串的的截断格式为:变量[头下标:尾下标],截断得到的字符串包含头下标所在字符而不包含尾下标所在字符串。正序下标从0开始,倒序从-1开始。

>>> str = 'hello,python!'
>
>>> str[0:-1]
hello,python

>>> str[2:]
llo,python!

>>> str * 2  # *号用来复制字符串
hello,python!hello,python!

Tuple

写在小括号()中用逗号分隔,元组中的元素类型可以不相同。元组也可以通过下标访问,其下标排序和字符串类似。

>>> tuple = ()  # 空元组的赋值
>>> tuple = (123, ) # 一个元素的元组的赋值

>>> tuple = (123, 'hello', 56.7)

>>> tuple[1:2]
hello, 56.7

>>> tuple * 2  # 乘号在这也是表示复制哦
(123, 'hello', 56.7, 123, 'hello', 56.7)

List

写在[]之间,用逗号将元素分隔开,元素类别可以各不相同,可以是数字、字符或者列表,可以通过下标索引和截取,截取后的列表为新列表。

列表List和Tuple在表示上只差了括号,索引和截断规律基本相同。但List是可变数据类型,而元组为不可变数据类型。

String、List和Tuple都属于sequence(序列)。

>>> list = [123, 'hello', 56.7]
# 常见内置函数
list.append(5)  # 在列表最后添加一个元素,也可以添加另一个列表
list.pop()  # 最尾巴的元素踢出来

Set

由一个或数个形态各异的大小整体组成的,构成集合的事物或对象称作元素或是成员。基本功能是进行成员关系测试和删除重复元素。

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

>>> s = set()
>>> s1 = {1, 2, 3}
>>> s2 = set({1, 2, 3})

集合最酷的地方在于,它可以用来测试成员是否在集合内,还能做集合操作

a = {1, 2, 3, 4, 5}

if 1 in a:
    print('1在集合a内')
else:
    print('1不在集合a内')

# set可以进行集合运算
a = set('abracadabra')
b = set('alacazam')

print(a - b)     # a和b的差集 {'b', 'd', 'r'}
print(a | b)     # a和b的并集 {'l', 'r', 'a', 'c', 'z', 'm', 'b', 'd'}
print(a & b)     # a和b的交集 {'a', 'c'}
print(a ^ b)     # a和b中不同时存在的元素 {'l', 'r', 'z', 'm', 'b', 'd'}

Dictionary

列表是有序的对象集合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典是一种映射类型,字典用{ }标识,它是一个无序的键(key) : 值(value)对集合。
键(key)必须使用不可变类型。在同一个字典中,键(key)必须是唯一的。

# 逐个配对
dict = {}
dict['one'] = "hello"
dict[2] = "python"

# 键值对序列赋值
dict([('Test', 1), ('Test1', 2), ('Test2', 3)])

# 循环结构
{x: x**2 for x in (2, 4, 6)}

dict(Test=1, Test1=2, Test2=3)
# 常见内置函数
dict.clear()  # 清空所有对象
dict.keys()  # 返回字典的所有键的序列dict_keys([‘Test’, 'Test1', 'Test2'])
dict.values()  # 输出所有值的序列dict_values([1, 2, 3])
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值