你能幫我解決這個問題嗎?我需要在回圈的幫助下解決它。
陳述
您的輸入是具有未知嵌套級別的串列串列。可能像:
[
[1, 2],
[
3,
[4, 5],
],
6,
7,
]
您的挑戰是將其重新塑造成一個這樣的串列:
[1, 2, 3, 4, 5, 6, 7]
我的代碼是:
import json
data = json.loads(input())
#WRITE YOUR CODE HERE
list_data = list(data)
flat_list = [item for items in list_data for item in items]
print(flat_list)
TypeError:“int”物件不可迭代
uj5u.com熱心網友回復:
嘗試遞回方法:
lst = [[1, 2],[3,[4, 5],],6,7]
def flat_list(lst, res):
for l in lst:
if isinstance(l, list):
flat_list(l, res)
else:
res.append(l)
result = []
flat_list(lst, result)
print(result)
輸出:
[1, 2, 3, 4, 5, 6, 7]
更新:( 使用沒有遞回方法的回圈)
lst = [[1, 2],[3,[4, 5],],6,7]
res = []
for l in lst:
tmp = [l]
while tmp != []:
for i in tmp:
if isinstance(i, list):
for j in i:
tmp.append(j)
else:
res.append(i)
tmp = tmp[1:]
print(res)
# [1, 2, 3, 4, 5, 6, 7]
uj5u.com熱心網友回復:
這是一種基于堆疊的方法:
lst = [[1, 2], [3, [4, 5], ], 6, 7]
stack = lst[::-1]
res = []
while stack:
item = stack.pop()
if isinstance(item, list):
for x in item[::-1]:
stack.append(x)
else:
res.append(item)
print(res)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/511115.html
