我是新手,刚遇到一个练习,它要求:
Given a string and a non-negative integer
n
, return a larger string that isn
copies of the original string.
我回答:
def string_times(str, n):
return(str * n)
并通过了所有测试。提供的解决方案:
def string_times(str, n):
result = ""
for i in range(n): # range(n) is [0, 1, 2, .... n-1]
result = result + str # could use += here
return result
我的问题是:是否有任何原因导致我的更简单的解决方案在某些情况下不起作用, 或者这只是一个更有经验的程序员想得太多的问题?
最佳答案
您的答案是正确的,但该练习可能想揭示其他概念,例如 for loops以及使用 +
和 +=
的字符串连接。
即是说,我想在上述解决方案中补充一点,当您真的不需要循环变量时,使用下划线是更好的做法。这是一种告诉 future 的程序员您没有在循环中的任何地方使用该变量的方式。
用xrange也更好如果您实际上不需要列表(由范围生成)。您可以尝试在解释器 range(1000000)
和 xrange(1000000)
中查看直接区别。 xrange
实际上是一个 generator ,使其内存效率更高。
在 python 3 中,range 默认返回一个生成器
# changed i to an underscore, using xrange instead of range
for _ in xrange(n): # xrange(n) *generates* 0, 1, 2 ... n-1
关于python - 非常基本的 python 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26752252/