PYTHON 数据结构 – 元组()

1.1 数据结构

一般常用的有数组(Array),集合(Set),列表(List),队列(Queue),链表(Linkedlist),树(Tree),堆(Heap),栈(Stack),字典(Dictionary)

Python中数据结构主要有序列,集合,字典。

1.2 序列

序列是一种可迭代的,元素有顺序,可以重复出现的数据结构,序列可以通过索引访问;序列包括列表,字符串,字节串,元组等。

对于索引,切片与字符串笔记中相同,不再记录。

1.2.1 通用函数

  • len(序列)长度(即元素的个数)
    >>> a =(1,2,3,4,5)
    >>> len(a)
    5

  • max(序列)最大值
    元素如整数,字符串按编码进行求值
    >>> a = (1,2,3,4,5)
    >>> max(a)
    5

  • min(序列) 最小值
    元素如整数,字符串按编码进行求值
    >>> a = (1,2,3,4,5)
    >>> min(a)
    1

1.3 元组

元组类似于数组,元组本身一旦定义是不可变的(即不能添加,删除其中的元素),元组里的元素类型可以是不同的(与数组有区别)。

数据类型:tuple

优点:

  • 可以更安全地保护数据
  • 增加程序执行速度

1.3.1 创建元组

  • 通过()创建多元素元组
# a = (元素1,元素2, ...)

>>> a = ('张三','男',100,100,90)
>>> print(a)
('张三', '男', 100, 100, 90)

  • 只有一个元素的创建方法
>>> a = ('hello')
>>> a
'hello'  # 发现结果不是元组,是一个字符串,()相当于运算优先级的作用了。

>>> a = ('hello',)  # 加一个逗号
>>> a
('hello',)
  • 用tuple函数创建
# tuple(序列)
>>> tuple(a)
('h', 'e', 'l', 'l', 'o')
>>>
>>> a = [1,2,3,4]
>>> tuple(a)
(1, 2, 3, 4)
  • 创建空元组
>>> a = ()
>>> b = tuple()
>>> a,b
((), ())

1.3.2 访问元组

可以通过索引的方式访问,也可以通过切片的方式访问

>>> a = (1,2,3,4)
>>> a[0]
1
>>> a[1:3]
(2, 3)

1.3.3 元组解包

把元组的元素值,赋值给变量。

>>> num = (1,2,3)
>>> a,b,c = num  # 把1,2,3 赋值给a,b,c (注意:元素个数和变量个数对应)
>>> print(a,b,c)
1 2 3

>>> num = (1,2,3,4,5)
>>> a,*b,c = num  # 如果个数不对应,可以用*var接收部分数据
>>> print(a,b,c)
1 [2, 3, 4] 5


>>> num=(1,2,3,4)
>>> a,_,b,_ = num  # 对于不需要的元素,可以用_接收,约定不取这个元素(本质上赋值给_了)
>>> print(a,b,_)
1 3 4

1.3.4 遍历元组

# 用for的一般遍历
# 循环一次,取出下一个
num = (1, 2, 3, 4, 5)
for item in num:
    print(item) # 依次打印1,2,3,4,5


# 带索引的遍历
num = (1, 2, 3, 4, 5)
for n, item in enumerate(num):  # n, item就是解包
    print(n,item)
    

1.3.5 删除元组

元组本身是不可变的,不支持修改,但可以删除整个元组。

>>> num = (1,2,3)
>>> del num
>>> num

1.3.6 元组的 +, * 运算

+
*

元组的运算是合并两个元组,创建一个新元组。

+
>>> a = (1,2,3)
>>> b = (4,5,6)
>>> c = a + b
>>> c
(1, 2, 3, 4, 5, 6)

元组的运算是重复元组,创建一个新元组。

*
>>> a = (1,2)
>>> a * 3
(1, 2, 1, 2, 1, 2)

1.3.7 用zip打包成元组

zip把多个序列,按列打包成元组。想像成一个二维表格,按列组成元组的元素。

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]

d = zip(a,b,c)
print(tuple(d)) # ((1, 4, 7), (2, 5, 8), (3, 6, 9))
————————

1.1 数据结构

一般常用的有数组(Array),集合(Set),列表(List),队列(Queue),链表(Linkedlist),树(Tree),堆(Heap),栈(Stack),字典(Dictionary)

Python中数据结构主要有序列,集合,字典。

1.2 序列

序列是一种可迭代的,元素有顺序,可以重复出现的数据结构,序列可以通过索引访问;序列包括列表,字符串,字节串,元组等。

对于索引,切片与字符串笔记中相同,不再记录。

1.2.1 通用函数

  • len(序列)长度(即元素的个数)
    >>> a =(1,2,3,4,5)
    >>> len(a)
    5

  • max(序列)最大值
    元素如整数,字符串按编码进行求值
    >>> a = (1,2,3,4,5)
    >>> max(a)
    5

  • min(序列) 最小值
    元素如整数,字符串按编码进行求值
    >>> a = (1,2,3,4,5)
    >>> min(a)
    1

1.3 元组

元组类似于数组,元组本身一旦定义是不可变的(即不能添加,删除其中的元素),元组里的元素类型可以是不同的(与数组有区别)。

数据类型:tuple

优点:

  • 可以更安全地保护数据
  • 增加程序执行速度

1.3.1 创建元组

  • 通过()创建多元素元组
# a = (元素1,元素2, ...)

>>> a = ('张三','男',100,100,90)
>>> print(a)
('张三', '男', 100, 100, 90)

  • 只有一个元素的创建方法
>>> a = ('hello')
>>> a
'hello'  # 发现结果不是元组,是一个字符串,()相当于运算优先级的作用了。

>>> a = ('hello',)  # 加一个逗号
>>> a
('hello',)
  • 用tuple函数创建
# tuple(序列)
>>> tuple(a)
('h', 'e', 'l', 'l', 'o')
>>>
>>> a = [1,2,3,4]
>>> tuple(a)
(1, 2, 3, 4)
  • 创建空元组
>>> a = ()
>>> b = tuple()
>>> a,b
((), ())

1.3.2 访问元组

可以通过索引的方式访问,也可以通过切片的方式访问

>>> a = (1,2,3,4)
>>> a[0]
1
>>> a[1:3]
(2, 3)

1.3.3 元组解包

把元组的元素值,赋值给变量。

>>> num = (1,2,3)
>>> a,b,c = num  # 把1,2,3 赋值给a,b,c (注意:元素个数和变量个数对应)
>>> print(a,b,c)
1 2 3

>>> num = (1,2,3,4,5)
>>> a,*b,c = num  # 如果个数不对应,可以用*var接收部分数据
>>> print(a,b,c)
1 [2, 3, 4] 5


>>> num=(1,2,3,4)
>>> a,_,b,_ = num  # 对于不需要的元素,可以用_接收,约定不取这个元素(本质上赋值给_了)
>>> print(a,b,_)
1 3 4

1.3.4 遍历元组

# 用for的一般遍历
# 循环一次,取出下一个
num = (1, 2, 3, 4, 5)
for item in num:
    print(item) # 依次打印1,2,3,4,5


# 带索引的遍历
num = (1, 2, 3, 4, 5)
for n, item in enumerate(num):  # n, item就是解包
    print(n,item)
    

1.3.5 删除元组

元组本身是不可变的,不支持修改,但可以删除整个元组。

>>> num = (1,2,3)
>>> del num
>>> num

1.3.6 元组的 +, * 运算

+
*

元组的运算是合并两个元组,创建一个新元组。

+
>>> a = (1,2,3)
>>> b = (4,5,6)
>>> c = a + b
>>> c
(1, 2, 3, 4, 5, 6)

元组的运算是重复元组,创建一个新元组。

*
>>> a = (1,2)
>>> a * 3
(1, 2, 1, 2, 1, 2)

1.3.7 用zip打包成元组

zip把多个序列,按列打包成元组。想像成一个二维表格,按列组成元组的元素。

a = [1,2,3]
b = [4,5,6]
c = [7,8,9]

d = zip(a,b,c)
print(tuple(d)) # ((1, 4, 7), (2, 5, 8), (3, 6, 9))