例如,
list1 = [ ['str1', 'str2', 'str3'],
[['str4', 'str5'], 'str6', 'str7', 'str8'],
['str9', 'str10']]
我希望list1输出如下:
str1 str2 str3
str4 str5 str6 str7 str8
str9 str10
这样,属于内部列表第一层的每个内部列表都位于各自的行上。
在上面的示例中,我将下面描述的部分称为第一层的内部列表:
['str1', 'str2', 'str3']
但是在下一节中,我会说str4和str5在属于第二层的内部列表中。换句话说,它们属于内部列表的内部列表。
[['str4', 'str5'], 'str6', 'str7', 'str8']
答案 0 :(得分:1)
您可以使用itertools.chain
:
list1 = [['str1', 'str2', 'str3'],
[['str4', 'str5'], 'str6', 'str7', 'str8'],
['str9', 'str10']]
from itertools import chain
def listy(x):
return x if isinstance(x, list) else [x]
for sublist in list1:
print(' '.join(chain.from_iterable(map(listy, sublist))))
str1 str2 str3
str4 str5 str6 str7 str8
str9 str10
答案 1 :(得分:1)
使用递归函数来处理任何深度的子列表,但在每个子列表之后打印换行符是可选的,并且仅在第一次调用时启用。
list1 = [ ['str1', 'str2', 'str3'],
[['str4', 'str5'], 'str6', 'str7', 'str8'],
['str9', 'str10']]
def p(l, newline=True):
output = ''
for i in l:
if isinstance(i, str):
output += i + ' '
else:
p(i, False)
if newline:
print()
print(output, end='')
p(list1)
这将输出:
str1 str2 str3
str4 str5 str6 str7 str8
str9 str10
答案 2 :(得分:1)
首先,您需要遍历第一内层,然后展平其中的元素。
然后使用连接功能按顺序打印它。详细信息如下。
list1 = [ ['str1', 'str2', 'str3'],
[['str4', 'str5'], 'str6', 'str7', 'str8'],
['str9', 'str10']]
def flatten(lst):
if lst==[]:
return lst
else:
if isinstance(list[0], list):
return flatten(lst[0])+flatten(lst[1:])
else:
return [lst[0],]+flatten(lst[1:])
def print_it(lst_rino):
for lst in lst_rino:
new_lst=flatten(lst)
print(" ".join(new_lst))
print_it(list1)
The Output:
str1 str2 str3
str4 str5 str6 str7 str8
str9 str10
答案 3 :(得分:0)
对于python来说仍然是新手,但是不能通过简单的字符串连接和列表元素来解决吗?
类似的东西
list1 = [['str1', 'str2', 'str3'],[['str4', 'str5'], 'str6', 'str7', 'str8'],['str9', 'str10']]
print(str(list1[0]) + '\n' + str(list1[1]) + '\n' + str(list1[2]))
输出正是op要求的?
['str1', 'str2', 'str3']
[['str4', 'str5'], 'str6', 'str7', 'str8']
['str9', 'str10']