在 Python 中使用范围函数

Using range function in Python

我是新手Python,对使用范围函数迭代字符串有疑问。

假设我需要将以下字符串中的所有内容都大写:

string = 'a b c d e f g'

我可以只写下面的代码吗?

for i in string:
    i = i.upper()
return string

还是应该使用 range 函数遍历字符串中的每个元素?

最后,一个更普遍的问题是每当我需要迭代string/list中的所有元素时,我应该什么时候使用范围函数,什么时候可以只使用“for”循环?

字符串是一个不好的例子,因为 Python 中的字符串无法更改。你必须建立一个新的:

new = ''
for i in string:
    new += i.upper()

为了举例,我们都将忽略 new = string.upper() 会在一条语句中执行此操作的事实。

一般来说,当您循环访问一个对象时,您会收到对成员的引用。您不能更改容器对象,但如果内部对象是可变的,则可以更改它。考虑这个愚蠢的例子:

a = [[1],[2],[3],[4]]
for element in a:
    element[0] *= 2

这将导致 a 变为 [[2],[4],[6],[8]],因为我们可以修改那些内部列表。我们无法更改外部列表。

作为一般规则,如果您发现自己在写 for i in range(len(xxx)):,那么有更好的方法来做到这一点。这并不总是正确的,但它是一个关键 Python 学习点。