使用格式打印在运行时可以包含未知数量变量的列表吗?

时间:2018-08-24 13:57:23

标签: python format

当我知道sample_list将恰好容纳4个项目时,以下方法起作用。

sample_list = ['cat', 'dog', 'bunny', 'pig']
print("Your list of animals are: {}, {}, {} and {}".format(*sample_list))

如果我不知道sample_list在运行时将包含的项目数,如何格式化字符串?这意味着我无法在设计时输入适当数量的括号占位符。

4 个答案:

答案 0 :(得分:3)

我只会使用join

sample_list = ['cat', 'dog', 'bunny', 'pig']
printstr = '%s, and %s' % (', '.join(sample_list[:-1]), str(sample_list[-1]))
print("Your list of animals are: %s" % printstr)

答案 1 :(得分:0)

这可能有帮助。

sample_list = ['cat', 'dog', 'bunny', 'pig']
str_val = ""
l = len(sample_list) -1

for i, v in enumerate(sample_list):
    if i == l:
        str_val += " and {}".format(v)
    else:
        str_val += " {},".format(v)    

print("Your list of animals are: {}".format(str_val))

或者单线

str_val = "".join(" and {}".format(v) if i == l else " {},".format(v) for i, v in enumerate(sample_list))
print("Your list of animals are: {}".format(str_val))

输出:

Your list of animals are:  cat, dog, bunny, and pig

答案 2 :(得分:0)

您可以创建在format上使用的字符串。

sample_list = ['cat', 'dog', 'bunny', 'pig']
test='Your list of animals are: '+'{}, '*(len(sample_list)-1)+'and {}'
print(test) # Your list of animals are: {}, {}, {}, and {}
print(test.format(*sample_list)) # Your list of animals are: cat, dog, bunny, and pig

答案 3 :(得分:0)

如果您使用的是Python 3.5+,则可以使用以下f字符串:

sample_list = ['cat', 'dog', 'bunny', 'pig']
print(f"Your list of animals are: {', '.join([item for item in sample_list[:-1]])} and {sample_list[-1]}")
在输入数据时,

f字符串比使用%更安全,并且比.format更灵活,在这个示例中,它没有太大的区别,以我的拙见,我应该习惯于使用它们很棒:)