访问嵌套列表的元素

frebpwbc  于 2021-09-08  发布在  Java
关注(0)|答案(5)|浏览(435)

我的代码有什么问题:

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

输出为:

  1. a
  2. bb
  3. ['ccc', 'ddd']
  4. ee
  5. ff
  6. g
  7. h.

但我想要这个输出:

  1. a
  2. bb
  3. ccc ddd
  4. ee
  5. ff
  6. g
  7. h.

应该做什么改变?

aij0ehis

aij0ehis1#

我假设规则是“打印列表中的每个项目” l 或嵌套列表 l 在其自己的行上,除非嵌套列表不包含子列表,否则,在这种情况下,在一行上打印其所有项目,中间留有空格。”
如果这是正确的,那么这个代码应该可以工作:

  1. l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
  2. def print_list(lst):
  3. if not any(isinstance(x, list) for x in lst):
  4. # print list of strings on one line
  5. print(*lst)
  6. return
  7. # contains sublists; print or process items one by one
  8. for x in lst:
  9. if isinstance(x, list):
  10. print_list(x) # process sub-list
  11. else:
  12. print(x)
  13. print_list(l)
qvsjd97n

qvsjd97n2#

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

  1. def find_value(list_):
  2. for i in list_:
  3. if isinstance(i,list):
  4. for j in find_value(i):
  5. yield j
  6. else:
  7. yield i
  8. l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
  9. for i in find_value(l):
  10. print(i)

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

unftdfkk

unftdfkk3#

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

  1. l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
  2. for i in l:
  3. for j in i:
  4. if isinstance(j,list):
  5. print(*j)
  6. else:
  7. print(j)
byqmnocz

byqmnocz4#

我假设你们有三维列表。

  1. l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
  2. from functools import reduce
  3. for first in l:
  4. for sec in first:
  5. if type(sec) == type(list()):
  6. iter = str(reduce(lambda x, y: str(x)+' '+str(y), sec))
  7. print(iter)
  8. else:
  9. print(sec)
n1bvdmb6

n1bvdmb65#

  1. L = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
  2. k = 0
  3. for i in L:
  4. for j in i:
  5. if k==2:
  6. for r in j:
  7. print(r)
  8. k =k+1
  9. else:
  10. print(j)
  11. k = k+1

相关问题