访问嵌套列表的元素

时间:2021-07-10 06:46:31

标签: python list nested element

我的代码有什么问题:

l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
for i in l:
  for j in i:
    print(j)`

输出为:

a
bb
['ccc', 'ddd']
ee
ff
g
h.

但我想要这个输出:

a
bb
ccc ddd
ee
ff
g
h.

应该做哪些改变?

5 个答案:

答案 0 :(得分:3)

我假设规则是“在单独的行上打印列表 l 中的每个项目或 l 中的嵌套列表,除非嵌套不包含子列表,在这种情况下,打印所有它的项目在一行上,中间有空格。”

如果这是正确的,那么这段代码应该可以工作:

l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
def print_list(lst):
    if not any(isinstance(x, list) for x in lst):
        # print list of strings on one line
        print(*lst)
        return
    # contains sublists; print or process items one by one
    for x in lst:
        if isinstance(x, list):
            print_list(x)  # process sub-list
        else:
            print(x)

print_list(l)

答案 1 :(得分:1)

如果你想在同一个级别中获取所有不同级别的数组值。在下面,一个例子可以解决你的问题

def find_value(list_):
    for i in list_:
        if isinstance(i,list):
            for j in find_value(i):
                yield j
        else:
            yield i
l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
for i in find_value(l):
    print(i)

你能提供更多关于你想要什么的信息吗?

答案 2 :(得分:1)

正如@Barmar 在评论中提到的,j 可以是列表。 您可以使用 isinstance 检查变量是否为特定类型

l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
for i in l:
  for j in i:
      if isinstance(j,list):
          print(*j)
      else:
          print(j)

答案 3 :(得分:1)

我假设您有 3 维列表。

l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
from functools import reduce

for first in l:
    for sec in first:
        if type(sec) == type(list()):
            iter = str(reduce(lambda x, y: str(x)+' '+str(y), sec))
            print(iter)
        else:
            print(sec)

答案 4 :(得分:1)

L = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
k = 0
for i in L:
    for j in i:
        if k==2:
            for r in j:
                print(r)
                k =k+1
        else:
            print(j)
            k = k+1