我可以在print语句中包含for循环吗?

时间:2016-09-11 01:30:44

标签: python python-3.x

我有一个活动的获奖者名单。我想在我的代码末尾打印出来,减去括号和引号,我目前正在使用:

            for items in winners:
                print(items)

我可以在打印声明中包含这个吗? 我想要:

            print("The winners of {} were: {} with a score of {}".format(sport, winners, max_result))

有没有办法将for循环集成到print语句中,或者是另一种消除引号和方括号的方法,以便我可以将它包含在语句中?

感谢。

4 个答案:

答案 0 :(得分:6)

您不能包含for循环,但您可以将获胜者列表加入字符串。

winners = ['Foo', 'Bar', 'Baz']
print('the winners were {}.'.format(', '.join(winners)))

这会打印

  获胜者是Foo,Bar,Baz。

答案 1 :(得分:0)

如果def header(request): return render_to_response (request, 'blog/header.html')是字符串列表,您可以使用winners连接它们。

例如:

str.join

因此,您可以将>>> winners = ['John', 'Jack', 'Jill'] >>> ', '.join(winners) 'John, Jack, Jill' 放入打印电话而非', '.join(winners),然后打印以逗号分隔的获胜者。

答案 2 :(得分:0)

for循环只能以理解的形式提供给print

但是,如果列表内容按照您要求的相应顺序,您只需执行以下操作:

print("The winners of {} were: {} with a score of {}".format(*winners))

这只是将每个括号与列表中的每个项目匹配。如果您需要以不同方式订购,您只需提供相对位置:

print("The winners of {1} were: {0} with a score of {2}".format(*winners))

答案 3 :(得分:0)

首先请注意,在Python 3中print是一个函数,但它是Python 2中的一个语句。此外,您不能使用for语句作为参数。 只有这样奇怪的解决方案出现在我的脑海中,它看起来只是一个for循环:

data = ['Hockey','Swiss', '3']
print("Sport is {}, winner is {}, score is {}".format(*( _ for _ in data )))

当然,因为print是一个函数,你可以用你需要的所有东西编写自己的函数,例如:

def my_print(pattern, *data):
    print(pattern.format(*( _ for _ in data)))  

my_print("Sport is {}, winner is {}, score is {}", 'Hockey', 'Swiss', '3')

您还可以阅读将在Python 3.6中引入的 f-strings "Literal String Interpolation" PEP 498。这个f字符串将提供一种方法,使用最小的语法将表达式嵌入到字符串文字中。