首先补充一个地方,之前有个文章演示的是猜数游戏,原文链接为猜数游戏用Python应该这样写,代码中漏掉了一个break语句,也就是说,在猜对的时候输出语句print('Congratulations!')后面应增加一个break,否则会让玩家继续猜,这是不合理的。
下面的今天的内容。
有时候可能会需要这样的功能:把任意深度的嵌套列表扁平化,例如把[1, 2, [3, [4]]]和[1, [2, [3, [4]]]]都变成[1, 2, 3, 4]的形式,由于提前无法确定列表的嵌套深度,这种情况比较适合使用递归来实现。演示代码如下:
def flatList(lst):
result = [] #存放最终结果
def nested(lst):#函数嵌套定义
for item in lst:
if isinstance(item, list):
nested(item)#递归子列表
else:
result.append(item)#扁平化列表
nested(lst) #调用嵌套定义的函数
return result #返回结果
#测试
lst = [1, 2, 3, 4]
print(flatList(lst))
lst = [1, [2, 3], 4]
print(flatList(lst))
lst = [1, [2, [3, 4]]]
print(flatList(lst))
lst = [1, [2, [3, [4]]]]
print(flatList(lst))
以上几种形式的列表都将被扁平化为[1, 2, 3, 4]