python语言使用递归展开不规则list
时间: 2023-02-17 09:02:50 浏览: 190
您好,可以使用递归来展开不规则的列表。
首先,你需要定义一个函数,用于递归遍历列表中的每个元素。在函数内部,首先判断该元素是否是列表,如果是,则递归调用该函数,继续遍历列表中的元素;否则,将该元素加入结果列表中。
例如,下面是一个展开不规则列表的示例代码:
```
def flatten_list(lst):
result = []
for item in lst:
if isinstance(item, list):
result.extend(flatten_list(item))
else:
result.append(item)
return result
# 测试代码
lst = [1, [2, 3, [4, 5]], 6, [[7, 8], 9]]
print(flatten_list(lst)) # 输出: [1, 2, 3, 4, 5, 6, 7, 8, 9]
```
希望这能帮到你!
相关问题
python不规则多维数组去重
在Python中,如果你处理的是不规则的多维数组或列表(也称为字典列表或嵌套列表,其中每个元素可能不是完全相同的类型),要去除重复项可能会有些复杂,因为标准的去重方法可能无法直接应用。这里你可以考虑使用一些递归和集合的方法来实现。
一种常见的做法是将所有元素转换为一个统一的数据结构,例如列表或集合,然后再去除重复。下面是一个简单的例子:
```python
def flatten_and_remove_duplicates(nested_list):
# 用列表推导式扁平化列表
flattened_list = [item for sublist in nested_list for item in sublist]
# 使用集合去重,因为集合只包含唯一的元素
unique_list = list(set(flattened_list))
return unique_list
# 示例
input_list = [[1, 2, 3], [2, 3, 4], [1, 2, 3]]
flattened_unique_list = flatten_and_remove_duplicates(input_list)
print(flattened_unique_list)
```
这个函数首先扁平化输入的嵌套列表,然后创建一个集合来去重,最后将集合转换回列表以便保持原始顺序(如果你不关心顺序,可以使用`set()`直接去重)。
注意,这种方法假设所有嵌套元素都可以被哈希(即不可变数据类型)。如果你的嵌套列表中包含不可哈希的自定义对象,你需要确保它们实现了`__hash__`和`__eq__`方法以支持去重。
阅读全文