python - 非常基本的 python 字符串

标签 python string

我是新手,刚遇到一个练习,它要求:

Given a string and a non-negative integer n, return a larger string that is n 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/

相关文章:

python - 当我运行这个时,我得到一个 "None"来回答而不是我的问题

python - Django:查找非空字符串的优雅方式

python - 使用 Pandas 在关键短语后提取字符串的特定部分?

c++ - 获取 OSName 作为字符串 C++

python - 外键 Django 管理的日期范围列表过滤器

python - 从子目录中复制特定扩展名的文件并将其放置到具有相同结构的新子目录中

python - 转换 (List -> Dictionary -> List) 与 (List -> Set -> List) 之间的功能差异?

ios - Objective-C 中的正则表达式

java - 将字符串中的第一个字母大写。我究竟做错了什么?

Java 线程不能与 JTextArea 一起正常工作