python中内置的数据结构有几种_python3常用的内置数据结构

针对python3的内置数据结构,做了个小结,包括概念、内置方法、示例等内容。

python3的内置数据结构总体分类:

可变对象:

序列类型:列表(list)、字节数组(bytearray)

key-value映射类型:字典(dict)

集合类型:集合(set)

不可变对象:

数值类型:整数(int)、浮点数(float)、复数(j)

序列类型:元组(tuple)、字节(bytes)

其中数值类型、序列类型为线性结构,其在内存中的地址空间是连续分布的。剩下的映射类型、集合类型则是非线性结构。

序列类型:

列表(list):

特点:

列表具有有序、可索引、可修改、可迭代的特点。列表一旦定义其内存中地址分布是连续的。通过索引的偏移量可以较快速的查找到对应的元素。但列表也具有一些缺点,比如列表的数据规模很大情况下,其内置方法(比如remove、insert等)将影响到元素之后的索引位置的调整,其时间复杂度为O(n)。

列表中可以嵌套其他类型数据,比如列表、字典、集合等,但需要注意的是在嵌套复杂类型时,其只是引用对象,做列表复制时需要注意。

定义方式:

定义空列表并赋予给标识符l1

l1 = list()

注意:l1 = list()与l1 = []的区别

如:list(range(10))与[range(10)]

从可迭代对象中元素,初始化一个新列表

l1 = list("hello")

l1 = list(range(10))

l1 = list(b"hello")

list常用内置方法:

1)append

作用:从列表末尾添加新元素,就地修改原来的列表并返回None。

例:

l1 = list(b"hello")

l1.append("a")

2)copy

作用:对一个列表进行浅复制

例:

l2 = l1.copy()

3)pop

作用:默认无索引参数情况,则从尾部移除一个元素,并返回该元素。可以指定参数为某个索引值,则删除该索引对应的元素。如果超出索引范围,则会抛出IndexError异常。

例:

l1.pop()

l1.pop(2)

4)remove

作用:从列表中移除某元素,就地修改列表并返回None。

例:

l1.remove("a")

5)reverse

作用:将列表中的元素进行反序。就地修改列表并返回None。

例:

l1.reverse()

6)sort

作用:将列表中的元素进行排序,默认为升序。就地修改列表并返回None。

例:

l1.sort()

7)insert

作用:在某个索引位置插入某个元素

例:

l1.insert(0, "a")

8)count

作用:统计某元素在列表中出现的次数,并返回次数。

例:

l1.count("a")

9)extent

作用:对现有列表进行扩展,就地修改原来的列表并返回None。

例:

l1.extend(l2)

字符串(str)

特点:

字符串具有有序、可索引、不可修改、可迭代的特点。

定义方式:

s1 = "hello"

str的内置常用方法:

1)partition

作用:以匹配到的第一个分隔符,将字符串分割成三部分(头、分隔符、尾)并返回一个元组。

例:

s2 = s1.partition("l")

2)split

作用:如果没有参数,则默认以空格为分隔符分割,并返回一个列表。若指定分隔符,则会匹配到所有分隔符并分割。

例:

s1 = "hello world"

s2 = s1.split()

3)strip

作用:默认从两端去除空格、\t、\r、\n等转义字符。可指定去除字符元素。最后返回一个字符串副本。

例:

s1 = "\thello hello\n"

s1.strip()

4)rjust, ljust, center

作用:对字符串进行对齐(右对齐,左对齐,居中),位置参数:总字符长度。默认参数:(可选)默认为空格,可以指定填充字符。

例:

s2 = s1.rjust(20, "+")

s2 = s1.ljust(20, "+")

s2 = s1.center(20, "+")

5)encode

作用:将字符串以指定格式进行编码并返回相应的字节码。默认为utf-8编码。

例:

s2 = s1.encode()

6)isalpha、isalnum、isdigit、isdecimal、isnumeric

作用:判断字符串的组成,并返回布尔值。

7)replace

作用:替换指定元素,并返回一个新字符串

例:

s3 = a.replace("o", "0")

元组(tuple)

特点:

元组具有有序、不可修改、可索引、可迭代的特点。

定义方式:

t1 = (1, 2, 3, 4)

l1 = ["a", "b"]

t1 = tuple(l1)

字节码(bytes、bytearray)

特点:

在python3中,字节码从字符串中独立出来。字节码在内存中是以一系列0与1组成。

bytes:具有有序、不可修改、可迭代的特点

bytearray:具有有序、可修改、可迭代的特点

定义方法:

bytes:

# 初始化一个指定大小的空字节码

b1 = bytes(int)

# 将str转化为bytes类型,并编码

b1 = bytes("hello", encoding="utf-8")

# 根据可迭代整数数列来定义bytes

b1 = bytes(range(10))

# 生成一个不可变的bytes副本

b2 = bytearray("hello", encoding="utf-8")

b1 = bytes(b2)

bytearray:

与bytes不同,bytearray定义一个可变字节序列。定义方法与bytes类似。

bytes、bytearra的内置常用方法:

bytes方法与str类似

bytearray方法与list类似

1)hex

作用:从bytes对象中创建一个16进制数的字符串。

例:

b3 = bytes.hex(b"abc ABC")

b"abc ABC".hex()

2)fromhex

作用:从16进制数组成的字符串中创建bytes。

例:

b1.fromhex("a0c2")

kv映射类型:

字典(dict)

特点:

字典具有无序、key唯一(去重)、可变、可迭代、非线性结构的特点。此外,字典的key是由可hash的元素组成(不可变对象),因此,key经过散列后,通过key进行查询其value值的速度是非常快的。查询的时间复杂度是O(1)。

定义方法:

d1 = {}

d1 = dict()

dict内置常用方法:

1)fromkey

作用:从可迭代对象中生成新字典的key,默认value为None(可自定义value值)。

例:

s1 = "hello"

d2 = d1.fromkeys(s1, 0)

2)get

作用:获取key对应的值,若没有找到key,则默认返回None。可以自定义返回值。

例:

d1 = {1: "a"}

d2.get("b", -1)

3)setdefault

作用:判断key是否存在,如果存在则返回对应的value值。如果不存在则新增key与value,默认value为None,可以自行设置默认value值。

例:

d1 = {1: "a"}

d1.setdefault(2, "b")

4)items

作用:返回一个包含字典key-value元素的视图(类集合对象)

例:

d1.items()

5)keys

作用:返回一个包含字典keys的视图(类集合对象)

例:

d1.keys()

6)values

作用:返回一个包含字典values的视图

例:

d1.values()

7)pop

作用:移除指定key并返回其对应值,若key不错在则抛出KeyError异常。

例:

d1.pop(1)

8)popitem

作用:从尾部弹出kv对,并返回kv组成的元组。

例:

d1.popitem()

9)update

作用:对原有的字典进行更新,若新增key与原key相同则会去重且新key对应的value覆盖原key的value。若新增key与原key不重复则字典会新增key-value对。

例:

d1 = {1: 'a', 2: 'b', 3: None}

d1.update({3: "c"})

d1.update({4: "d"})

d1.update({(5, "e"), (6, "f")})

集合类型

集合(set)

特点:

集合具有无序、不重复(去重)、可迭代、可变、非线性结构的特点。集合中的元素均为不可变且可hash的对象(frostset除外),集合查询某元素的时间复杂度为O(1)。

定义方法:

s1 = set()

s1 = {1, 2, 3, 4}

set内置方法:

1)add

作用:向集合中添加元素

例:

s1 = set()

s1.add(1)

2)union

作用:将两个集合合并,并返回新的集合

例:

s1 = {5}

s2 = {1, 2, 3, 4}

s3 = s1.union(s2)

3)update

作用:对原有集合进行更新,返回None。

例:

s1.update(s2)

4)pop

作用:从集合中弹出一个元素,返回元素值。若集合为空,则抛出KeyError异常

例:

s1.pop()

5)remove

作用:从集合中删除指定元素。若元素不存在,则抛出KeyError异常。

例:

s1.remove(1)

6)discard

作用:从集合中删除指定元素。若元素不存在,则不提示。

例:

s1.discard(3)

7)difference(-)

作用:差集。返回该集合与其他集合不同的元素

例:

s1 = {3, 4, 5, 6}

s2 = {1, 2, 3, 4}

s3 = {6, 7, 8, 9}

print(s1.difference(s2, s3))

print(s1 - s2 - s3)

8)intersection(&)

作用:交集。返回所有集合中共有的元素

例:

print(s1 & s2)

print(s1.intersection(s2))

9)symmetric_difference(^)

作用:对称差。返回所有非交集的元素

例:

s1 = {3, 4, 5, 6}

s2 = {1, 2, 3, 4}

s3 = {6, 7, 8, 9}

print(s1 ^ s2 ^ s3)

print(s1.symmetric_difference(s2).symmetric_difference(s3))

10)isdisjoint

作用:判断如果两个集合没有交集,则返回True

例:

print(s1.isdisjoint(s2))

11)issubset

作用:判断是否为子集

例:

s1 = {3, 4, 5, 6}

s4 = {3, 4}

print(s4.issubset(s1))

12)issuperset

作用:判断是否为超集

例:

s1 = {3, 4, 5, 6}

s4 = {3, 4}

print(s1.issuperset(s4))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值