PYTHON中的三级列表

时间:2018-03-01 13:31:49

标签: python

我被困在Python中。我需要创建和解析一个3级列表。 例如,列表中列表内的列表。

2个级别对我有用,但是第三个级别是如此混乱请帮助

l= [1,5,6,7,8,['a','b','c','d']]
a= ['name 1','name 2',l]

for i in a:
   if type(i) == type([]):
      for j in i:
         print(j, end=' ')
      for k in j:
         if type(j) == type([]):
             print('non')


else:
    print(i, end=' ')

3 个答案:

答案 0 :(得分:0)

for i in a:
    if type(i) is list: ## If i is a list
        for j in i:
            if type(j) is list: ## If j is a list
                for k in j:
                    print(k)
            else:
                print(j)
    else:
        print(i)

答案 1 :(得分:0)

听起来你只是错过了一个缩进:

l= [1,5,6,7,8,['a','b','c','d']]
a= ['name 1','name 2',l]

for i in a:
   if type(i) == list:
      for j in i:
         if type(j) == list:
             for k in j:
                 print(k, end=' ')
         else:
             print(j, end=' ')


   else:
       print(i, end=' ')

答案 2 :(得分:0)

正如人们所说,我们不知道你的目的是什么,所以很难帮助你。

但是,这里有一些提示:

  • for循环中的元素应缩进
  • 要检查类型,您可以使用isinstance
  • 您可以使用新行来提高初始变量的可见性
  • 为变量提供更好的名称

解决问题的代码可能如下所示

nested_list = [
    'name1',
    'name2',
    [
        1, 3, 5, 7,
        ['a', 'b', 'c', 'd']
    ]
]

for i in nested_list:
    if isinstance(i, list):
        for j in i:
            # Do something with j
            if isinstance(j, list):
                for k in j:
                    # Do something with k, like for example
                    print("%s ==> %s ==> %s" % (i, j, k))
    else:
        # Do something else with i, like for example
        print("I: %s" % i)`

如果您只需要打印列表,则更简单的方法是使用模块pprint。有关优秀的教程,请参阅PythonModuleOfTheWeek

您只需执行以下操作:

import pprint

nested_list = [
    'name1',
    'name2',
    [
        1, 3, 5, 7,
        ['a', 'b', 'c', 'd']
    ]
]

pprint.pprint(nested_list)