方法二:试试For循环
for each_item in Org:
print(each_item)
>>>
SW
MED
HWD
['VAL', ['VPM', 'VQ', 'Auto', ['APP', ['WAD', 'LS']]]]
依然有列表,怎么办?多次循环?好吧,试一下:
for each_item in Org:
if isinstance(each_item, list):
for each_item1 in each_item:
if isinstance(each_item1, list):
for each_item2 in each_item1:
if isinstance(each_item2, list):
for each_item3 in each_item2:
if isinstance(each_item3, list):
for each_item4 in each_item3:
print(each_item4)
else:
print(each_item3)
else:
print(each_item2)
else:
print(each_item1)
else:
print(each_item)
>>>
SW
MED
HWD
VAL
VPM
VQ
Auto
APP
WAD
LS
恩,不错,每个包含在多层嵌套里的元素都被打印出来了,可是代价太大了,足足用了18行代码,要知道Java那么多代码但只有其中的9行代码价值180亿美金,并不是代码越多越好,而且现在的嵌套只有4层,那如何对付5层6层甚至更多曾嵌套呢,难道也是用for循环一层一层写下去么?
我们观察到,在这几层循环中有一些代码是重复的,比如下面:
for each_item3 in each_item2:
if isinstance(each_item3, list):
for each_item4 in each_item3:
print(each_item4)
else:
print(each_item3)
是否可以把这些重复的语句想办法合并一下,要知道计算机可是最喜欢干也最擅长干重复的事情了,那么下面就把重复的代码定义为一个模块,起个名字叫做print_list:
def print_list(your_list):
for each_item in your_list:
if isinstance(each_item, list):
print_list(each_item) #这里是问题关键,这个模块引用了自己作为模块的一部分!
else:
print(each_item)
Look,print_list这个模块已经写好,他有一个参数“your_list”,其实这个模块就是一个函数,函数的名称是print_list,他有一个参数“your_list”。那么我们来运行一下这个函数:
>>>
SW
MED
HWD
VAL
VPM
VQ
Auto
APP
WAD
LS
没错,你成功了,只要6行代码!