从列表中提取列表并以新格式打印每个列表 - Python 3.6

Extract List from Lists and Print each List with a new format - Python 3.6

我有一个如下格式的列表,包括末尾的额外方括号:

[[[['10.0.0.0-E', '10.0.0.0-B'], ['172.0.0.0-E', '172.0.0.0-B'], ['12.0.0.0-E', '12.0.0.0-B']]]]

我想获取此列表并打印出以下内容:

10.0.0.0-E - 10.0.0.0-B

172.0.0.0-E - 172.0.0.0-B

12.0.0.0-E - 12.0.0.0-B

额外的括号是不是把我搞砸了?

我试过了..

newList = []
for item in result:
    newList.append(item[0].split(","))
print(newList)

你的列表是list inside a list inside a list,解释了额外的括号。

这个有效:

result = [[[['10.0.0.0-E', '10.0.0.0-B'], ['172.0.0.0-E', '172.0.0.0-B'], ['12.0.0.0-E', '12.0.0.0-B']]]]

for item in result[0][0]:
    print(f'{item[0]} - {item[1]}')

result[0][0] 选择 result 的第一个元素,一个列表,然后选择它的第一个元素,另一个列表 - for 循环然后将该列表的每个元素分配给 item一次一个。

print(f'{item[0]} - {item[1]}') 获取该项目并打印您需要的格式化字符串:

10.0.0.0-E - 10.0.0.0-B
172.0.0.0-E - 172.0.0.0-B
12.0.0.0-E - 12.0.0.0-B

假设内部列表总是一对字符串:

from functools import reduce
a = [[[['10.0.0.0-E', '10.0.0.0-B'], ['172.0.0.0-E', '172.0.0.0-B'], ['12.0.0.0-E', '12.0.0.0-B']]]]

if a:
    while type(a[0]) == list:
        a = reduce(lambda x,y:x+y,a)

for i in range(0,len(a),2):
    print(a[i],a[i+1])

希望对朋友有帮助:

a = [[[['10.0.0.0-E', '10.0.0.0-B'], ['172.0.0.0-E', '172.0.0.0-B'], ['12.0.0.0-E', '12.0.0.0-B']]]]
main_list = a[0][0]
for i in range(len(main_list)):
    print(main_list[i][0], '-' ,main_list[i][1])

输出:

10.0.0.0-E - 10.0.0.0-B
172.0.0.0-E - 172.0.0.0-B
12.0.0.0-E - 12.0.0.0-B

您是否试过像这样循环遍历指定的索引

for i in x[0][0]:                                                                                                      
    print(i) 

Result                                                                                                                                                                                            
['10.0.0.0-E', '10.0.0.0-B']                                                                                            
['172.0.0.0-E', '172.0.0.0-B']                                                                                          
['12.0.0.0-E', '12.0.0.0-B']

或者你当然可以像这个例子那样使用 end=''

 for i in x[0][0]:
    for j in I:                                                                                                       
        print(j, end='')                                                                                               
    print(end='\n')                                                                                                   
 
 Result:
  10.0.0.0-E10.0.0.0-B                                                                                                    
  172.0.0.0-E172.0.0.0-B                                                                                                  
  12.0.0.0-E12.0.0.0-B  

所以你基本上有四个层次的嵌套列表:

[ # <- first level
    [ # <- second level
        [ # <- third level
            ['10.0.0.0-E', '10.0.0.0-B'],
            ['172.0.0.0-E', '172.0.0.0-B'],
            ['12.0.0.0-E', '12.0.0.0-B']
        ]
    ]
]

在这种情况下,第一级和第二级并不重要。您想遍历第三级并加入字符串。

首先删除这两个外部级别:

my_list = [[[['10.0.0.0-E', '10.0.0.0-B'], ['172.0.0.0-E', '172.0.0.0-B'], ['12.0.0.0-E', '12.0.0.0-B']]]]
list_of_pairs = my_list[0][0]

然后使用 for pair in list_of_pairs 遍历 list_of_pairs 并加入字符串:

for pair in list_of_pairs:
    print(' - '.join(pair))

综合起来:

my_list = [[[['10.0.0.0-E', '10.0.0.0-B'], ['172.0.0.0-E', '172.0.0.0-B'], ['12.0.0.0-E', '12.0.0.0-B']]]]

for pair in my_list[0][0]:
    print(' - '.join(pair))

或者,去掉显式 for-loop:

my_list = [[[['10.0.0.0-E', '10.0.0.0-B'], ['172.0.0.0-E', '172.0.0.0-B'], ['12.0.0.0-E', '12.0.0.0-B']]]]

print('\n'.join(' - '.join(pair) for pair in my_list[0][0]))