Python 结构化一维序列

  • Post category:Python

当我们需要构建结构化数据时,一维序列是一种非常常用的数据结构。Python 提供了以下几种的一维序列:列表(list)、元组(tuple)、字符串(string)和字节数组(bytearray)。

列表(list)

列表是 Python 中最常用的一维序列,使用方法非常灵活。列表中的元素可以是任意类型的数据,包括列表、元组、字典和函数等。以下是列表的基本使用方法:

  1. 创建列表

可以通过方括号 [] 创建一个空列表,也可以在方括号中传入元素来创建包含元素的列表。

# 创建一个空列表
l1 = []

# 创建一个包含元素的列表
l2 = [1, 2, 3]
  1. 索引和切片

可以通过列表中元素的下标来获取、修改或删除元素。列表中的下标从 0 开始,负数从最后一个元素开始计数。列表支持切片操作,可以通过切片来获取一个子列表。

# 获取第一个元素
print(l2[0])   # 1

# 修改第一个元素
l2[0] = 4
print(l2)      # [4, 2, 3]

# 删除第一个元素
del l2[0]
print(l2)      # [2, 3]

# 切片操作
print(l2[0:2]) # [2, 3]
  1. 列表的方法

列表有许多内置的方法可以对列表进行操作,例如添加元素、删除元素、排序等。

# 添加元素
l2.append(4)               # 在列表末尾添加元素
l2.insert(1, 5)            # 在第二个元素后面插入元素
l3 = [6, 7]
l2.extend(l3)              # 将另一个列表的元素追加到当前列表的末尾

# 删除元素
l2.remove(4)               # 删除元素 4
l2.pop()                   # 删除并返回最后一个元素
l2.pop(1)                  # 删除并返回第二个元素
l2.clear()                 # 清空列表

# 排序
l4 = [3, 1, 2]
l4.sort()                  # 排序,默认升序
l4.sort(reverse=True)      # 排序,降序
print(l4)                  # [3, 2, 1]

元组(tuple)

元组是一种不可变的一维序列,与列表相似,但是元组的元素不可被修改。元组可以使用圆括号 () 或者在元素之间用逗号 , 来创建。

# 创建元组
t1 = ()
t2 = (1, 2, 3)
t3 = 1, 2, 3

# 访问元素
print(t2[0])       # 1

# 元组的遍历
for x in t2:
  print(x)

# 元组的方法
print(t2.index(2)) # 返回元素 2 的索引位置
print(t2.count(2)) # 返回元素 2 在元组中出现的次数

元组没有修改元素的方法,但我们可以通过重新定义一个新的元组来达到修改的目的。

# 修改元组
t4 = (1, 2, 3)
t5 = t4 + (4,)
print(t5)    # (1, 2, 3, 4)

# 删除元组
del t5

字符串(string)

字符串是一种不可变的一维序列,包含了多个字符。同样,字符串也可以使用单引号 ” 或双引号 “” 来创建。

# 创建字符串
s1 = ''
s2 = "Hello, World!"

# 访问字符
print(s2[0])        # 'H'
print(s2[0:5])      # 'Hello'
print(s2[-1])       # '!'

# 字符串的遍历
for x in s2:
  print(x)

# 字符串的方法
print(s2.upper())   # 转换成大写字母
print(s2.lower())   # 转换成小写字母
print(s2.strip())   # 删除字符串开头和结尾的空格
print(s2.split(','))# 按照 , 分割字符串
print(s2.startswith('Hello'))  # 判断字符串是否以 'Hello' 开头
print(s2.find('World'))         # 查找字符串中 'World' 的位置

字节数组(bytearray)

字节数组也是一种序列,和字符串非常相似。它的元素是字节类型(byte),而字符串的元素是字符类型(str)。字节数组可以使用 bytes() 或 bytearray() 来创建。

# 创建字节数组
ba1 = bytearray(b'hello')
ba2 = bytearray([104, 101, 108, 108, 111])

# 访问元素
print(ba1[0])       # 104

# 字节数组的遍历
for x in ba1:
  print(x)

# 字节数组的方法
ba1[0] = 72         # 修改字节类型元素 
del ba1[1]          # 删除一个字节类型元素
ba1.extend(b'world')# 在尾部追加另一个字节数组
ba1.pop()           # 删除并返回末尾的字节类型元素
print(ba1.hex())    # 将字节数组转换为十六进制字符串

这就是一维序列的基本使用方法。在实际应用中,可以根据不同的情况,选择不同的一维序列来满足我们的需求。