嵌套列表[[1, 2,9], [3, 4]], [5]]如何转换成[[0, 0,0], [1, 1]], [2]], 其中的嵌套列表[[1, 2,9], [3, 4]], [5]]如何转换成[[0, 0,0], [1, 1]], [2]]中的元素值刚好是嵌套列表中元素的索引值
时间: 2023-02-08 11:15:54 浏览: 55
你可以使用递归的方式来解决这个问题。首先定义一个函数,该函数接收一个列表作为参数,然后对该列表进行遍历。如果遍历到的元素仍然是一个列表,那么就继续递归调用该函数,否则替换该元素为它在原列表中的索引值。
下面是一种可能的实现方式:
``` python
def convert(lst):
for i, item in enumerate(lst):
if isinstance(item, list):
convert(item)
else:
lst[i] = i
return lst
```
使用方式:
```python
>>> lst = [[1, 2,9], [3, 4], [5]]
>>> convert(lst)
[[0, 0, 0], [1, 1], [2]]
```
其中, convert函数中,i是索引值,而item是每个列表的值,使用enumerate()能够方便的得到索引和元素,isinstance(item, list)判断item是不是列表,是列表的话就递归调用自身,不是的话就将这个值替换成索引。
相关问题
嵌套列表[[1, 2,9], [3, 4]], [5]]如何转换成[[0, 0,0], [1, 1]], [2]]
您可以使用 Python 内置的 enumerate 函数来转换列表中的每一项。具体地,可以这样实现:
```
original_list = [[1, 2, 9], [3, 4], [5]]
transformed_list = [[[i,j] for j, x in enumerate(sublist)] for i,sublist in enumerate(original_list)]
```
这样的结果为
```
[[[0, 0], [0, 1], [0, 2]], [[1, 0], [1, 1]], [[2,0]]]
```
如果需要,你也可以使用List Comprehension里嵌套map函数,来做这个转换
```
transformed_list = [[[i, j] for j, x in enumerate(sublist)] for i, sublist in enumerate(map(lambda x: x,original_list))]
```
这里嵌套map函数是因为 python3 中map函数返回的是迭代器, 你可以尝试用list()来解包 map(lambda x: x,original_list) , 看看有什么不同.
嵌套列表[[1, 2,9], [3, 4]], [5]]如何转换成[[0, 0,0], [01 1]], [2]]
可以使用递归的方式来解决这个问题。具体的做法是:
1. 判断当前元素是否是列表
2. 如果是列表,对其中的元素递归执行步骤1和2
3. 如果不是列表,将其减去1
下面是一个参考代码
```python
def decrement_list(lst):
if isinstance(lst, list):
return [decrement_list(x) for x in lst]
else:
return lst - 1
lst = [[1, 2, 9], [3, 4], [5]]
decremented_lst = decrement_list(lst)
print(decremented_lst)
```
执行这段代码会得到输出: [[0, 0, 0], [2, 3], [4]]
其中,变量decremented_lst中就是转换后的列表。
阅读全文