---
source_url: https://docs.dolphindb.cn/zh/funcs/f/flatten.html
fetched_at: 2026-05-19T09:21:47Z
category: funcs
title: flatten
sha1: badece4faa52aebfdd20a53041f18a525c88082b
---

# flatten

## 语法

`flatten(X)`

## 详情

将一个矩阵、一个元组或一系列向量转换成一维向量。

注意：

- 如果元组中的元素不包含元组，则将元组转化为一维向量。
- 如果是嵌套元组，则把值为元组的元素先转化为一维向量，其它元素不变，返回的结果仍然是一个元组。

## 参数

**X** 可以是向量、元组或矩阵。

## 返回值

一个向量。

## 例子

将一个矩阵转换成向量。

```dolphindb
m=1..10$5:2;
flatten(m);
// output
[1,2,3,4,5,6,7,8,9,10]
```

将一系列向量转换成一个向量。

```dolphindb
a=1..10;
b = a cut 2;
b;
// output
([1,2],[3,4],[5,6],[7,8],[9,10])
flatten(b);
// output
[1,2,3,4,5,6,7,8,9,10]

x=flatten([1, [2,3]]);
x;
// output
[1,2,3]
```

关于将一个向量分成多个小的向量，参见 [cut](../c/cut.html) 函数。

将一个嵌套元组转换成一个向量。

```dolphindb
list = (1, (2, (3, 4, 5)), (6, 7), 8, [9])
x1 = flatten(list)
x1
//此时先将元组元素(3, 4, 5)、(6, 7)转换为一维向量[3,4,5]、[6,7]，返回结果仍然为元组
// output:(1,(2,[3,4,5]),[6,7],8,[9])
x2= flatten(x1)
x2
//再次执行，将元组元素(2,[3,4,5])转换为一维向量[2,3,4,5]，返回结果仍然为元组
// output:(1,[2,3,4,5],[6,7],8,[9])
x3= flatten(x2)
x3
//最后，将元组转换为一维向量
// output:[1,2,3,4,5,6,7,8,9]
```

也可使用 `reduce` 函数循环执行转换，返回最终结果。

```dolphindb
reduce(flatten, init=list)
// output:[1,2,3,4,5,6,7,8,9]
```

若想观察逐步转换的结果，可使用 `accumulate`。

```dolphindb
accumulate(flatten, init=list)
// output:[(1,(2,(3,4,5)),(6,7),8,[9]),(1,(2,[3,4,5]),[6,7],8,[9]),(1,[2,3,4,5],[6,7],8,[9]),[1,2,3,4,5,6,7,8,9]]
```

将一个包含矩阵的元组转换成一个向量。

```dolphindb
m = 1..10$5:2;
n = ( m ,11, (12, 13), [14])
reduce(flatten, init=n)
// output:[1,2,3,4,5,6,7,8,9,11,12,13,14]
```
