1. 引言
如果你在日常工作中经常使用Python进行编码,那么毫无疑问你会非常喜欢这个简单的Python功能。
闲话少说,我们直接开始吧!
2. 举个栗子
例如,要求大家打印列表中元素的值。我想大部分人可以立即使用 for 循环来执行此操作。
li = [10, 20, 30, 40, 50]
for i in li:
print(i)
结果如下:
10
20
30
40
50
但是现在,我们是否可以在同一行中打印多个元素的值,每个元素之间都有一个空格。此时我们可以通过使用函数print()
中的 end
参数来实现。代码如下:
li = [10, 20, 30, 40, 50]
for i in li:
print(i, end=' ')
结果如下:
10 20 30 40 50
3. 问题由来
现在,的确上述输出,看起来可以满足我们的要求。但是有个不完美的地方在于最后一个循环打印 数字50
的时候,使用 end
参数在其后添加一个空格。虽然 end
参数帮助我们打印了中间的空间,但将空格放在最后的这种副作用并不是我们想要的。
特别是,当涉及到在线面试问题和编码平台时,他们希望我们得到给定的确切输出。即使是额外的空格有时候也会导致网站不接受我们的解决方案。
4. 错误方案
要解决此问题,如果您考虑通过索引打印每个元素,那大概率是行不通的!为什么?因为编码平台具有隐藏的测试用例,这些测试用例可能会接收不同数量的值。
下面是一个示例。
Question
Get a list of integers as input in the given format and print the values
in the given format:
Input:
10 20 30
Output:
10 20 30
Hidden Test Case:
Input:
10 20
Output:
10 20
样例代码:
li = list(map(int, input().split()))
print(li[0], li[1], li[2])
第一个测试case可以通过:
Input:
10 20 30
Output:
10 20 30
但是,对于隐藏的测试用例,列表中只有两个值。所以 li[2]
会触发一个 IndexError
,如下:
Input:
10 20
Output:
IndexError: list index out of range
5. 解决方案
那么我们要如何解决这个问题?嗯,这就是星号操作符的用武之地。您是否尝试过在 print()
函数中在列表(或任何可迭代对象)前使用星号 *
。
实质上在函数print
中使用它会将列表(或任何可迭代对象)中的每个元素作为单独的值传递,并在它们之间用空格打印它们,就像使用逗号手动操作一样。
代码如下:
li = list(map(int, input().split()))
print(*li)
我们来测试第一个用例:
Input:
10 20 30
Output:
10 20 30
接着测试隐藏的用例:
Input:
10 20
Output:
10 20
6. 其他用法
事实上,可以将其扩展应用于任何可迭代对象。下面是使用字符串和 range()
给出的一些示例。
样例一:
s = 'medium'
print(*s)
输出:
m e d i u m
样例二:
print(*range(1, 6))
print(*range(4, 8))
输出:
1 2 3 4 5
4 5 6 7
7. 总结
看到这里的小伙伴,想必这个功能对你来说是崭新和有趣的吗?
事实上,从大家最喜欢的编码语言中了解学习新事物总是感觉很棒!
希望大家可以从现在开始使用此功能,并使编码看起来更容易。