我的代码有什么问题:
l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']for i in l: for j in i: print(j)`
l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
for i in l:
for j in i:
print(j)`
输出为:
abb['ccc', 'ddd']eeffgh.
a
bb
['ccc', 'ddd']
ee
ff
g
h.
但我想要这个输出:
abbccc dddeeffgh.
ccc ddd
应该做什么改变?
aij0ehis1#
我假设规则是“打印列表中的每个项目” l 或嵌套列表 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)
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)
qvsjd97n2#
如果要在同一级别中获取不同级别的所有数组值。在下文中,一个例子可以解决您的问题
def find_value(list_): for i in list_: if isinstance(i,list): for j in find_value(i): yield j else: yield il = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']for i in find_value(l): print(i)
def find_value(list_):
for i in list_:
if isinstance(i,list):
for j in find_value(i):
yield j
yield i
for i in find_value(l):
print(i)
你能提供更多关于你想要什么的信息吗?
unftdfkk3#
正如@barmar在评论中提到的 j 可以是列表。你可以用 isinstance 检查变量是否为特定类型
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)
if isinstance(j,list):
print(*j)
print(j)
byqmnocz4#
我假设你们有三维列表。
l = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']from functools import reducefor 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)
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)
print(sec)
n1bvdmb65#
L = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']k = 0for 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
L = ['a', ['bb', ['ccc', 'ddd'], 'ee', 'ff'], 'g', 'h']
k = 0
for i in L:
if k==2:
for r in j:
print(r)
k =k+1
k = k+1
5条答案
按热度按时间aij0ehis1#
我假设规则是“打印列表中的每个项目”
l
或嵌套列表l
在其自己的行上,除非嵌套列表不包含子列表,否则,在这种情况下,在一行上打印其所有项目,中间留有空格。”如果这是正确的,那么这个代码应该可以工作:
qvsjd97n2#
如果要在同一级别中获取不同级别的所有数组值。在下文中,一个例子可以解决您的问题
你能提供更多关于你想要什么的信息吗?
unftdfkk3#
正如@barmar在评论中提到的
j
可以是列表。你可以用isinstance
检查变量是否为特定类型byqmnocz4#
我假设你们有三维列表。
n1bvdmb65#