我的代码有什么问题:
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.
应该做哪些改变?
答案 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