当前位置: 面试刷题>> 列表扁平化 (经典算法题500道)
### 题目描述补充
**题目**: 列表(或数组)扁平化
给定一个嵌套的列表(或数组),其中元素可以是整数、字符串或其他列表(数组),请编写一个函数将其扁平化,即返回一个不包含任何嵌套结构的列表(数组),所有元素都是原嵌套列表中的元素,并且保持原有的顺序。
**示例输入**:
```python
[1, [2, 3], [4, [5, 6]]]
```
**示例输出**:
```python
[1, 2, 3, 4, 5, 6]
```
### 示例代码
#### PHP
```php
function flattenArray($arr) {
$result = [];
foreach ($arr as $item) {
if (is_array($item)) {
$result = array_merge($result, flattenArray($item));
} else {
$result[] = $item;
}
}
return $result;
}
// 测试
$nestedArray = [1, [2, 3], [4, [5, 6]]];
$flatArray = flattenArray($nestedArray);
print_r($flatArray);
```
#### Python
```python
def flatten_list(lst):
result = []
for item in lst:
if isinstance(item, list):
result.extend(flatten_list(item))
else:
result.append(item)
return result
# 测试
nested_list = [1, [2, 3], [4, [5, 6]]]
flat_list = flatten_list(nested_list)
print(flat_list)
```
#### JavaScript
```javascript
function flattenArray(arr) {
let result = [];
arr.forEach(item => {
if (Array.isArray(item)) {
result = result.concat(flattenArray(item));
} else {
result.push(item);
}
});
return result;
}
// 测试
const nestedArray = [1, [2, 3], [4, [5, 6]]];
const flatArray = flattenArray(nestedArray);
console.log(flatArray);
```
**码小课提醒**:
在解决此类问题时,理解递归或迭代的思想非常关键。递归方法通过函数调用自身来处理嵌套结构,而迭代方法则通过循环和条件判断来逐步展开列表。此外,注意处理各种数据类型的兼容性,确保函数能够正确处理所有可能的输入情况。
码小课网站中有更多关于算法和数据结构的内容分享给大家学习,涵盖从基础到进阶的各种主题,欢迎大家访问学习。