如何并排打印两个不同大小的列表?

2024-05-01 22:10:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个不同长度的列表,我想并排打印,用标签隔开。例如:

a_list = ["a","b","c","d","e"]
b_list = ["f","g","h","i","j","k","l","m","n"]

我试过:

print('A-list:'+ '\t' + 'B-list:')
for i in range(len(b_list)):
    print(a_list[i] + '\t' + b_list[i])

我当然会得到一个“超出范围的跟踪”,因为一个列表更短。我不想用拉链


Tags: in列表forlenrange标签list拉链
3条回答

您的代码正在生成IndexError,因为b_list的长度大于a_list的长度,为此,您可以使用try except语句:

for i in range(max(len(b_list), len(a_list))):
    try:
        print(f"{a_list[i]}\t", end="")
    except IndexError:
        print(f" \t", end="")
    try:
        print(f"{b_list[i]}\t")
    except IndexError:
        print(f" \t")

输出:

a   f
b   g
c   h
d   i
e   j
    k
    l
    m
    n

没有任何额外的循环:

list_a = ["A", "B", "C"]
list_b = ["1", "2", "3", "4"]
len_a = len(list_a)
len_b = len(list_b)
i = 0
while True:
    if i < len_a:
        print(list_a[i], end="")
    if i < len_b:
        print("\t", list_b[i], end="")
    print()
    i += 1
    if i > max(len_a, len_a):
        break

这是一个可能的解决办法。不管a_listb_list长还是短

def get(lst, idx):
    try:
        return lst[idx]
    except:
        return " "

a_list = ['a','b','c','d','e'] 
b_list = ['f','g','h','i','j','k','l','m','n']

result = []

for i in range(min(len(a_list), len(b_list))):
    result.append(get(a_list, i))
    result.append(get(b_list, i))

for i in range(min(len(a_list), len(b_list)), max(len(a_list), len(b_list))):
    result.append(get(a_list, i))
    result.append(get(b_list, i))

print('\n'.join('\t'.join((result[i], result[i+1]))
                          for i in range(0, len(result), 2)))

这将打印预期输出:

a   f
b   g
c   h
d   i
e   j
    k
    l
    m
    n

相关问题 更多 >