2.5Python数据结构之序列(Sequence)、集合(Set)、映射(Mapping)

序列是一种可迭代的、有序的、可以包含重复元素的数据结构。

不可变(Immutable)序列

不可变序列(Immutable Sequence):字符串(class str)、元组(class tuple)、字节串(class bytes)、范围(class range)。

  • 不可变序列中的元素是有序的,通过正值索引或负值索引访问,正值索引的最后一个索引是“序列长度-1”,负值索引的最后一个索引是“-1”。
  • 不可变序列中的元素不必都属于同一个类型,一旦声明不可替换元素。
  • 不可变序列的长度(元素的个数)不可以动态改变,不可以向不可变序列添加、插入、删除元素。

字符串(str)

>>> a = "Hello"
>>> a[0]
'H'
>>> a[1]
'e'
>>> a[4]
'o'
>>> a[-1]
'o'
>>> a[-2]
'l'

元组(tuple)

创建元组可以使用tuple([iterable])或者圆括号用逗号“ , ”将元素分隔。

#圆括号创建法
>>> a = ('hello', 'world' ,1,2,3)
>>> a[1]
'world'
#tuple()创建法
a = tuple(['hello', 'world', 1,2,3])
#空元组
a = ()

范围(range)

创建范围可以使用range()函数。范围包括start位置元素,不包括end位置元素。

#如果省略 step 参数,其默认值为 1。 如果省略 start 参数,其默认值为 0
range(start, stop[, step])
>>> list(range(10))
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> list(range(1, 11))
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
>>> list(range(0, 30, 5))
[0, 5, 10, 15, 20, 25]

可变(Mutable)序列

可变序列(Mutable Sequence):列表(class list)、字节数组(class bytearray)。

  • 可变序列中的元素是有序的,通过正值索引或负值索引访问,正值索引的最后一个索引是“序列长度-1”,负值索引的最后一个索引是“-1”。
  • 可变序列中的元素不必都属于同一个类型,而且可以随时替换元素。
  • 可变序列的长度(元素的个数)可以动态改变,可以向可变序列添加、插入、删除元素。

列表(list)

创建列表可以使用list([iterable])或者方括号用逗号“ , ”将元素分隔。

#方括号创建法
>>> a = ['hello', 'world', 1,2,3]
>>> a[1]
'world'
#list()创建法
a = list(('hello', 'world', 1,2,3]))
#空列表
a = []

集合

集合是一种可迭代的、无序的、不可以包含重复元素的数据结构。

由于集合是无序的,所以无法通过索引访问元素。

集合:可变集合(set)和不可变集合(frozenset)。

可变集合(set)

创建可变集合可以使用set([iterable])或者花括号用逗号“ , ”将元素分隔。

  • 可变集合中的元素不必都属于同一个类型,由于无法通过索引访问,所以无法替换元素。
  • 可变集合的长度(元素的个数)可以动态改变,可以向可变集合添加、删除元素。
#花括号创建法
a = {'张三', '王二', '李五'}
#set()创建法
a = set(('张三', '王二', '李五'))

不可变集合(frozenset)

创建不可变集合可以使用frozenset([iterable]),不能使用花括号 {} 。

  • 不可变集合中的元素不必都属于同一个类型,一旦声明不可替换元素。
  • 不可变集合的长度(元素的个数)不可以动态改变,不可以向不可变集合添加、删除元素。
a = frozenset({'张三', '王二', '李五'})

映射(Mapping)

映射(Mapping):只有字典(dict)。

字典(dict)

字典是一种可迭代、提供键(key)值(value)的可变数据结构。键(key)不可以重复,值(value)可以重复。

创建字典可以使用dict([iterable])或者花括号用逗号“ , ”将 “键:值” 对分隔。

  • 字典中的值是通过键访问的。
  • 字典中的值不必都属于同一个类型,而且可以随时替换值。
  • 字典的长度(元素的个数)可以动态改变,可以向字典添加、删除元素。
#花括号创建法
>>> a = {102: '张三', 105: '王二', 108: '李五'}
>>> a.get(102)
'张三'
#dict()创建法
a = dict({102: '张三', 105: '王二', 108: '李五'})
#空字典
a = {}

原创文章,作者:huoxiaoqiang,如若转载,请注明出处:https://www.huoxiaoqiang.com/back/python/2699.html

发表评论

登录后才能评论